PYTHONPATH应该包含./build/*吗?

时间:2016-08-27 20:21:44

标签: python python-2.7 cython distutils pythonpath

运行

$ python setup.py build_ext

使用通常的Cython扩展配置创建一个build目录,并将已编译的模块放在其中。

Python解释器现在应该如何找到它们? PYTHONPATH应该包含那些子子目录吗?这对我来说似乎很狡猾。也许这意味着以不同的方式工作?

2 个答案:

答案 0 :(得分:1)

据推测,当你编写一个包含Cython代码的包时,your setup.py will contain something similar to this

setup(
    ext_modules = cythonize("example.pyx")
)

(有一些变化,但这是一般的想法)。当你运行

python setup.py install

python setup.py install --user

你会看到它创建了二进制文件(扩展名基于你的操作系统 - 我的将是example.so)并将它们复制到标准安装目录(也取决于你的操作系统)。

因此,这些二进制文件已经位于Python发行版的导入路径中,它们可以import像常规模块一样。

因此,您无需将构建目录添加到路径中。只需安装(可能使用--user,或使用virtualenv,如果您正在开发),并以常规方式导入扩展。

答案 1 :(得分:1)

您可以在https://docs.python.org/3.5/install/

找到相关信息 在python实际安装模块之前,

Build是一个中间结果。在pythonpath中放入库的路径,例如:

<dir>/local/lib/python

如果你使用“home”安装技术,dir是你选择的目录,那么

/home/user2