使用python在文件夹和子文件夹中创建.pyd文件

问题描述

我正在尝试使用以下脚本为项目的文件夹和子文件夹中的所有 .py 文件创建 .pyd 文件

import os
from distutils.core import setup
from Cython.Build import cythonize
import warnings
warnings.filterwarnings('ignore')

os.chdir(r"C:\Users\Downloads\Project")
             
for parent,dirnames,filenames in os.walk(os.getcwd()):
    for fn in filenames:
        if fn.lower().endswith('.py') and fn !='__init__.py':
            setup(ext_modules=cythonize(parent+ "\\" +fn),script_args=['build'],options={'build':{'build_lib':'.'}})
            os.remove(os.path.join(parent,fn))

但是当我执行上面的脚本时,它通过创建另一个名为“Project”的文件夹来创建 .pyd 文件。 任何人都可以帮我知道上面的脚本有什么问题。

如果有任何替代选项可以为文件夹和子文件夹下的所有 .py 文件创建 .pyd 文件,也会很有帮助

解决方法

我已经用几行更新了您的代码,如果有帮助,请尝试:

import os
from distutils.core import setup
from Cython.Build import cythonize
import warnings
    
warnings.filterwarnings('ignore')
    
package_path = r"C:\Users\Downloads\Project"
module_name = os.path.basename(os.path.normpath(package_path))
os.chdir(package_path)
    
for parent,dirnames,filenames in os.walk(os.getcwd()):
    for fn in filenames:
        if fn.lower().endswith('.py') and fn != '__init__.py':
            os.chdir(parent)
            setup(ext_modules=cythonize(parent + "/" + fn),script_args=['build'],options={'build': {'build_lib': '.'}})
            os.remove(os.path.join(parent,fn))
    
import shutil
    
source_dir = os.path.join(package_path,module_name)
file_names = os.listdir(source_dir)
 
for file_name in file_names:
    shutil.move(os.path.join(source_dir,file_name),package_path)
    
os.rmdir(source_dir)