是否可以永久添加python站点目录?
为了管理我的项目的所有python路径,并在启动python解释器时使它们可用,我在项目主目录中创建了一个project.pth,其中包含相对路径, 实际上,为了便于阅读,每次启动解释器时,我都需要执行site.addsitedirmy\u project\u home\u dir 我尝试在指向我的项目主目录的站点包中设置PYTHONPATH或创建.pth,但启动解释器时仍然无法自动读取project.pth 唯一有效的方法是将我的project.pth放在站点包中,但通过这样做,我必须将我的项目相对路径转换为绝对路径是否可以永久添加python站点目录?,python,Python,为了管理我的项目的所有python路径,并在启动python解释器时使它们可用,我在项目主目录中创建了一个project.pth,其中包含相对路径, 实际上,为了便于阅读,每次启动解释器时,我都需要执行site.addsitedirmy\u project\u home\u dir 我尝试在指向我的项目主目录的站点包中设置PYTHONPATH或创建.pth,但启动解释器时仍然无法自动读取project.pth 唯一有效的方法是将我的project.pth放在站点包中,但通过这样做,我必须将我的项
因此,是否有一个master.pth文件,我可以在其中指定我的项目主目录,以便自动读取该目录中的project.pth?虽然我知道这并没有明确回答您的问题,但我可以建议另一种方法吗?虚拟环境的使用 给定一个我使用pyscaffold创建的项目。 -在最高级别的python-MVenv上创建一个虚拟环境。 -将PYTHONPATH添加到venv\Scripts\activate.bat文件中。 -PYTHONPATH应至少包含三个条目path\to\MyTestProject;pat\to\MyTestProject\src;路径\到\MyTestProject\tests。通过venv\Scripts\Activate.bat从cmd激活您的虚拟环境。-从模块内部,从src导入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首先,请注意.pth文件也接受以“import”开头的行并执行它们。因此,解决方案是在站点包内创建project.pth,并在my project home dir中导入一个模块,该模块实际上执行site.addsitedir
2其他可能性:使用环境变量PYTHONSTARTUP:它将在python启动时执行您想要的任何模块。您可以指定一个模块来执行site.addsitedir操作,甚至可以直接将路径添加到sys.path中。根据,在Windows上向本地lib/site packages目录添加.pth文件应该可以工作。您是注销Windows还是重新启动PC以更新路径文件?如果您不这样做,Windows将不会更新您的路径。我正在使用Linux,我不想为此重新启动电脑。我希望.pth位于我的项目目录中,而不是站点包目录中,这样我可以使用相对路径。是的,这是一个好主意。尽管如此,由于我想自动安装该项目,因此自动编辑一个激活文件是危险的,该文件可能会随着virtualenv evolution而更改。另外,有一个针对windows的activate.bat和一个针对linux的activate,对于一个通用解决方案来说,两者都很难维护。啊……考虑到你的声誉,我想我应该假设你了解虚拟环境。这个问题并不清楚你是在进行自动安装,所以我只是假设:无论如何,祝你好运。不过,我很好奇,为什么你认为修改激活会很复杂或危险?用几行代码修改activate似乎很容易,只要附加PYTHONPATH而不是覆盖PYTHONPATH,就相当安全。有什么我遗漏的吗?手动修改很容易。但是,通过安装后脚本,如果同时由于virtualenv的更改而更改了激活脚本,则可能会遇到一些问题。我喜欢有路径列表的平面文件。