一般python导入的文件格式均为.py文件,但是在复现一篇论文结果时遇见作者import了一个.pyx文件,由于服务器环境出了问题,目前用的是windows的深度学习环境,所以一直提示No mudules…
查找了很多博客后发现windows平台必须将.pyx格式转换为.pyd才可以使用,经过实践发现完美解决了问题,
主要记录一下一些遇到的错误解决方法,因此本文未改动原作者文字与代码

原文链接:https://blog.csdn.net/qq_41185868/article/details/100108507

第一步,编写转换代码。保存为PyxConvertPyd.py

#!/usr/bin/python
# Run as:  
#    python PyxConvertPyd.py build_ext --inplace  
   
import sys
import numpy as np
A=sys.path.insert(0, "..")
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from Cython.Distutils import build_ext
 
# ext_module = cythonize("TestOMP.pyx")
ext_module = Extension(
                        "bbox",
            ["bbox.pyx"],    #更改为自己想要转换的.pyx文件
            extra_compile_args=["/openmp"],
            extra_link_args=["/openmp"],
            )
 
setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = [ext_module],
    #注意这一句一定要有,不然只编译成C代码,无法编译成pyd文件
    include_dirs=[np.get_include()]
)

第二步,执行命令进行转换

python PyxConvertPyd.py build_ext --inplace

然后即可得到.pyd文件,直接import即可。

python中import自己文件夹下某个自定义函数

原文链接:https://blog.csdn.net/liao392781/article/details/80496060
例如目录结构如下
在这里插入图片描述
一、a.py 要 import dir目录下的 b.py 文件。

a.py代码如下:

# coding=utf-8
"import dir 目录下的 b.py 文件"
import dir.b
print dir.b.name

执行 a.py 报错

提示找不到这个模块的名字 dir.b 。通过查找官方文档,发现要包含目录下的文件时需要在目录下声明一个__init__.py文件,即使这个文件是空的也可以。当然这个文件也可以初始一些数据。

于是在 dir 下新建 init.py文件,目录结构如下
在这里插入图片描述
二、b.py 要 import test目录下的 a.py 文件。

这个时候需要使用到sys模块,b.py文件内容如下:

# coding=utf-8
"import dir 目录下的 b.py 文件"
import sys
sys.path.append('..')
import a

陕西省西安市沙坡村职业技术学院
2019年10月17日

Logo

更多推荐