我的目标是拥有一个通用目录,我可以在网络上添加自动添加到sys.path
的软件包,而无需在每次导入所述软件包时运行site.addsitedir
或sys.path.append
。有没有办法做到这一点?
背景:我有一个小型用户网络,他们都需要访问相同的脚本。每次我想添加一个新的包供他们使用时,我都会添加他们的PYTHONPATH
环境变量的路径。用户群已经开始增长,包的数量也在增长。
如果我可以在启动任何脚本时加载的网络上设置master.pth
(不需要额外的代码),我将非常感激。但是,似乎您无法嵌套.pth
个文件,因此只需将指针.pth
添加到master.pth
目录似乎不起作用。
编辑关于来自@ S.Lott的评论(评论有点大):举例来说,wxPython。三个对象放在site-packages目录中:wxversion.py,一个名为wx-2.8-msw-unicode的目录和一个.pth
文件。 。pth
文件指向该目录,该目录包含所有可导入的包(wx,wxPython等)。我目前有三个以类似方式构建的其他包,其中一个包含几个基本模块。我需要将所有可导入的模块移动到同一目录中以获得所需的结果。
但是,如果.pth
文件可以“嵌套”,我可以将所有这些目录添加到master.pth
,保留一个相对干净的文件夹。我希望这是有道理的,谢谢你的帮助!
答案 0 :(得分:1)
您有几个选择:
site.py
文件 - 查找PREFIXES
列表并添加您的网络路径:在每台计算机的site-packages文件夹中有一个自定义.pth文件,其中包含以下行:
import sys; sys.path.append('/network/path/to/modules_and_packages')
使用site.py的缺点是当你升级到另一个python时,你必须在所有机器上找到并调整所有 site.py
。使用自定义.pth文件,只需复制到新的“site-packages”文件夹即可。
这两种解决方案都允许您设置网络位置,就像普通的site-packages
文件夹一样。例如:
m:\python_site_packages\ # network drive and folder
|
|- dbf.py # for accessing dBase III and VFP .dbf files
|
|- web\
|- __init__.py
|- application.py
|- (etc)
只是提醒一下 - 如果服务器不可用,那么所有网络包都将不可用。