可以永久添加python站点目录吗?

时间:2018-05-16 14:40:10

标签: python

为了管理我项目的所有python路径,并在我启动python解释器后立即使用它们,我在项目主目录中创建了一个project.pth,其中包含相对路径, 实际上,要阅读,我每次启动解释器时都需要执行site.addsitedir(my_project_home_dir)。

我尝试设置PYTHONPATH或在指向我的项目主目录的site-packages中创建.pth,但是当我启动解释器时,project.pth仍然没有自动读取。

唯一有效的方法是将我的project.pth放在site-packages中,但是通过这样做,我必须将我的项目相对路径转换为绝对路径。

所以它有一个主.pth文件,我可以指定我的项目主目录,这样我就可以让我的project.pth位于该目录中自动读取?

2 个答案:

答案 0 :(得分:1)

虽然我知道这并没有具体回答你的问题,但我可以建议采用不同的方法吗?使用虚拟环境(venv)。

给定一个项目(我用pyscaffold)来创建。   - 在最高级别创建虚拟环境(python -m venv venv)。   - 将PYTHONPATH添加到您的venv \ Scripts \ activate.bat文件中。   - PYTHONPATH应包含至少三个条目(path \ to \ MyTestProject; pat \ to \ MyTestProject \ src; path \ to \ MyTestProject \ tests)。通过" venv \ Scripts \ activate.bat"从cmd激活您的虚拟环境。 - 从模块中导入,从src导入(import src.mytestproject.package1.module1)

每次激活虚拟环境时,您都可以使用自己的路径 - 并且,您将获得与虚拟环境相关的所有优点作为奖励。

MyTestProject
├── AUTHORS.rst
├── CHANGELOG.rst
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── conf.py
│   ├── index.rst
│   ├── license.rst
│   ├── Makefile
│   └── _static
├── LICENSE.txt
├── README.rst
├── requirements.txt
├── setup.cfg
├── setup.py
├── src
│   └── mytestproject
│       ├── __init__.py
│       ├── package1
│       │   ├── __init__.py
│       │   └── module1.py
│       ├── package2
│       │   ├── __init__.py
│       │   └── module2.py
│       └── skeleton.py
└── tests
    ├── conftest.py
    └── test_skeleton.py

答案 1 :(得分:0)

最后我发现了两种方式:

1)首先,请注意.pth文件也接受以' import'开头的行。并执行它们。所以解决方案是在site-packages中创建project.pth导入我的项目主目录中的模块,该模块实际上是site.addsitedir()

2)其他可能性:使用环境变量PYTHONSTARTUP:它将在python启动时执行你想要的任何模块。您可以指定执行site.addsitedir()的模块,甚至可以直接将路径添加到sys.path