python的path是什么意思

阅读: 评论:0

python的path是什么意思

python的path是什么意思

考虑这样一个Python项目:foo/

__init__.py

scripts/

run.py

demo.sh

在正常情况下,尝试从foo包导入将

如果从项目的根目录运行脚本,则失败,因为默认的Python

行为是添加调用Python解释器的脚本的目录

(不一定是当前目录)到sys.path。

(docs):

^{pr2}$

然而,我最近注意到,这种进口正在我的盒子上工作,我

追踪到一些与Python有关的令人惊讶的行为。在我的狂欢中

我在PYTHONPATH中添加了一个目录:export PYTHONPATH="/some/path:$PYTHONPATH"

如果PYTHONPATH最初是空的,那么(有点草率,但很常见)

命令的格式将在后面留下冒号:echo $PYTHONPATH

/some/path:

我一直以为后面的标点没有影响,但是

似乎尾部的结肠是神秘成功的原因

导入。前导或尾随冒号(甚至是已定义但空的PYTHONPATH)

将导致sys.path在{}之前包含一个空字符串模块加载,这又会导致添加当前工作目录

到sys.path。在

下面是要演示的Python脚本和Bash脚本。我也一样

同时使用Python2.7和Python3.3的行为。在

Python脚本:run.py:import sys, os

pp = ('PYTHONPATH')

try:

import foo

print 'OK'

wd() in sys.path

assert pp == '' or pp.startswith(':') dswith(':')

except Exception:

print 'FAIL'

wd() not in sys.path

assert pp is None

Bash脚本:demo.sh:# Import fails.

unset PYTHONPATH; python scripts/run.py

# Import succeeds -- to my surprise.

PYTHONPATH='' python scripts/run.py

PYTHONPATH='/tmp:' python scripts/run.py

PYTHONPATH=':/tmp' python scripts/run.py

我的问题:我对形势的理解是正确的,还是我误入歧途了?

这有记录吗?我什么也没找到。至少,我是

把这些信息贴在这里,以防对其他人有所帮助。

只有我一个人发现这种行为出乎意料吗?

本文发布于:2024-02-05 06:07:08,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170725872363693.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:python   path
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23