PYTHONPATH 与 sys.path

标签 python python-import pythonpath sys.path

另一位开发人员和我不同意应该使用 PYTHONPATH 还是 sys.path 来允许 Python 在用户(例如开发)目录中查找 Python 包。

我们有一个具有典型目录结构的 Python 项目:

Project
    setup.py
    package
        __init__.py
        lib.py
        script.py

在script.py中,我们需要import package.lib。当软件包安装在 site-packages 中时,script.py 可以找到 package.lib

但是,当从用户目录工作时,需要做其他事情。我的解决方案是将我的 PYTHONPATH 设置为包含 "~/Project"。另一个开发者想把这行代码放在script.py的开头:

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

以便 Python 可以找到 package.lib 的本地副本。

我认为这是一个坏主意,因为这条线仅对开发人员或从本地副本运行的人有用,但我无法给出一个坏主意的充分理由。

我们应该使用 PYTOHNPATHsys.path 还是可以?

最佳答案

如果修改路径的唯一原因是让开发人员在他们的工作树中工作,那么您应该使用安装工具为您设置环境。 virtualenv 非常流行,如果您使用的是 setuptools,您只需运行 setup.py develop 即可在当前 Python 安装中半安装工作树。

关于PYTHONPATH 与 sys.path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893598/

相关文章:

python - 多线程性能开销

python - 为什么包在 __init__.py 文件下有导入?

python - 为什么我的系统在显式设置后使用旧的 PYTHONPATH?

python - 在 python 中转换框架 pandas

python - 无法使用 VirtualEnv 在 OSX 10.8.4 上安装 matplotlib

python - 在 Mac 上为多个 Python 发行版安装 pip

python - Mac Swampy(Python学习模块)安装

python - 在 python 中, 'import foo.bar as bar' 和 'from foo import bar' 有什么区别?

python - 从导入的模块覆盖导入模块的内置函数

python - python 在脚本中哪里查找文件?