我试图在我没有对全局site-packages目录的写访问权的系统上发现一个模块,并且不改变环境(PYTHONPATH).我试图将.pth文件放在与我正在执行的脚本相同的目录中,但它似乎被忽略了.例如,我创建了一个extras.pth包含以下内容的文件:
N:\PythonExtras\lib\site-packages
Run Code Online (Sandbox Code Playgroud)
但是,打印并放置在同一目录中的以下脚本False.
import sys
print r"N:\PythonExtras\lib\site-packages" in sys.paths
Run Code Online (Sandbox Code Playgroud)
sys.path我有写访问权限的唯一目录是包含脚本的目录.是否有另一个(目前不存在的)目录,我可以放置extras.pth并让它被看到?有没有更好的方法来解决这个问题?
我在Windows上使用python 2.7..pth我在这里可以找到的所有问题都使用系统模块目录.
编辑:我已经跟踪了Windows每用户安装目录%APPDATA%\Python\Python27\site-packages.我可以在那里放置一个模块,它将被导入,但如果我在.pth那里放一个文件,它就没有效果了.这真的不应该起作用,还是我做错了什么?
Bre*_*arn 52
如文档中所述,只有在PTH文件位于site-packages目录中时才会处理它们.(更准确地说,如果它们位于"站点目录"中,它们将被处理,但"站点目录"本身是Python安装的全局设置,并且不依赖于当前目录或脚本所在的目录.)
如果打开包含脚本的目录sys.path,则可以sitecustomize.py在该目录中创建一个.这将在Python启动时加载.在里面sitecustomize.py,你可以这样做:
import site
site.addsitedir('/some/dir/you/want/on/the/path')
Run Code Online (Sandbox Code Playgroud)
这不仅会添加该目录,还会将其添加为"站点目录",从而导致其中的PTH文件被处理.如果您想创建自己的site-packages类似个人目录,这很方便.
如果您只需要在路径中添加一个或两个目录,则可以更简单地执行此操作.只需创建一个操作的小型Python库,sys.path然后从脚本中导入该库.就像是:
# makepath.py
import sys
sys.path.append('/whatever/dir/you/want')
# script.py
import makepath
Run Code Online (Sandbox Code Playgroud)
编辑:同样,根据文档,%APPDATA%\Python\PythonXY\site-packages(在Windows上)可能存在特定于站点的目录.您可以尝试,如果实际上您具有该访问权限(而不仅仅是您的脚本目录).
| 归档时间: |
|
| 查看次数: |
43087 次 |
| 最近记录: |