问题描述
我正在尝试使用以下脚本为项目的文件夹和子文件夹中的所有 .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)