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

Should PYTHONPATH include ./build/*?

运行

$ python setup.py build_ext

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

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

据推测,当您编写包含 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

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

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

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

您可以在这里找到信息https://docs.python.org/3.5/install/

构建是 python 实际安装模块之前的中间结果。在 pythonpath 中放入库的路径,例如:

<dir>/local/lib/python

如果您使用 "home" 安装技术并且 dir 是您选择的目录,例如

/home/user2