- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要向我的 PYTHONPATH
添加一个新的目录位置,但问题是我在一个干净的新安装的系统 (Linux) 上,其中没有 PYTHONPATH
尚未定义。我已经阅读并使用了 PYTHONPATH
,我认为我理解得很好,但我不知道当 PYTHONPATH
还不存在时会发生什么。
我不能追加到不存在的东西上,但我希望目前发现的所有重要库仍然有效,所以要小心,我在 Python 中做了 print str(sys.path)
获取所有标准值。然后我为 PYTHONPATH
定义了一个 env
变量,包括我刚找到的所有节点,加上我的新目录。但是哇,很多东西都停止工作了! Python 被新的 env
变量搞得一团糟,我不得不将其删除,此时一切又恢复正常了。由于 PYTHONPATH
错误,系统非常困惑,当在提示符下输入不正确的命令时,系统甚至找不到要显示的错误消息。
我的问题并不简单,比如少了一个冒号,或者在应该使用冒号的时候却使用了分号;我检查了。我的新目录也不会导致问题,因为即使没有新节点,问题仍然存在。那么谁能解释为什么这种方法不起作用?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下面我根据要求提供了额外的细节,但是不需要再读下去了,我认为问题已经解决了。 PYTHONPATH 中列出的节点不会覆盖所有“标准”节点,而是成为新的附加条目(我相信是前置的,因此可以控制先出现的节点)的解释是关键。
从头开始,没有定义 PYTHONHOME 或 PYTHONPATH,结果是从 Python 内部产生的:
print ':'.join(sys.path)
:/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client
将其用作 PYTHONPATH(即,在调用 Python 之前定义环境变量),即使没有明确使用 Python,也会导致功能非常差的命令提示符。例如:
$> export PYTHONPATH='/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client'
$> echo $PYTHONPATH
/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client
$> IntentionalBadCommand
Fatal Python error: Py_Initialize: Unable to get the locale encoding
File "/usr/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Aborted
错误在于认为 PYTHONPATH 需要包含所需一切的整个宇宙。是的,我在发布之前做了 RTFM,但我想我错过了开头单词“Augment”的意义。因此,我接受了并非所有内容都需要明确指定的建议——可以只指定所需的额外内容,我尝试了:
$> export PYTHONPATH=/usr/lib/python2.7/dist-packages/postgresql-pkg
$> echo $PYTHONPATH
/usr/lib/python2.7/dist-packages/postgresql-pkg
$> IntentionalBadCommand
IntentionalBadCommand: command not found
虽然我还没有尝试使用上面提到的 postgresql 包,但它似乎可以正常工作。仍然有点神秘,为什么在 PYTHONPATH 前面加上大量不必要的节点会使事情像它那样严重地破坏,特别是因为我从应该是可靠的来源获得条目:sys.path。
但无论如何,它可能已经解决了,非常感谢!
最佳答案
不清楚您的问题可能是什么,但请注意您不需要将 sys.path
的默认值添加到您的 PYTHONPATH
变量。您放入 PYTHONPATH
的目录是要搜索的附加目录;系统默认附加到您的 PYTHONPATH
。换句话说,粗略地说:
sys.path = ":".split( os.environ['PYTHONPATH'] ) + sys.path
显示 PYTHONPATH
的确切值和由此产生的错误将有助于我们确定问题。
关于python - 没有 PYTHONPATH 时的 PYTHONPATH 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14529060/
如何在 Geany 中添加新的 pythonpath?我在偏好设置/选项中缺少某些内容吗?我尝试将其添加到 .bashrc 中,但没有成功。 export PYTHONPATH=/mypath 我现在
我需要向我的 PYTHONPATH 添加一个新的目录位置,但问题是我在一个干净的新安装的系统 (Linux) 上,其中没有 PYTHONPATH尚未定义。我已经阅读并使用了 PYTHONPATH,我认
我有以下情况(通过以下命令验证): x 目录下已有 python 脚本文件 现有的 python 猫__init__.py归档在x x 添加到 PYTHONPATH登录用户和 sudo 均可用的变量
将该行放入 .bashrc(Mac 上为 .profile)中,工作目录位于该路径上。别管它,它不是。 export PYTHONPATH=$PYTHONPATH 我注意到带有该行的 shell 在其
我对 PyCharm 如何确定 Python 用于定位模块和包的路径感到困惑。 首先,当我取消选中设置时(在“Python 控制台”和我的运行配置中),我仍然在 sys.path 开头看到我的项目目录
标题真的说明了一切。当我运行脚本 ( ModuleNotFoundError: No module named ) 时,我的 PYTHONPATH 中的文件无法识别,但是当我在命令行中打开交互式提示
我想设置pythonpath,但它不适用于其他目录。 我的 bashrc: 导出 PYTHONPATH=/usr/lib/python2.7 导出 PYTHONPATH=$PYTHONPATH/pla
根据documentation , sys.path 在 Python 解释器 session 启动时从 PYTHONPATH 初始化。但是,就我而言,PYTHONPATH 变量为空。当我在终端中执行
我是一个长期的潜伏者,第一次发帖所以请保持温柔。 我已经使用 Python 几个月了,我一直在尝试安装一个名为 heatmap 的库。具体this fork .通过 zip 文件安装后,我可以很好地导
请帮助我理解这一点。在这里你可以看到我设置了 PYTHONPATH(它来 self 的 .bashrc) jean@klippie:~$ echo $PYTHONPATH :/home/jean/lo
环境:debian 4.0 python 2.4 我的“项目”安装在: /usr/lib/python2.4/site-packages/project. 但我想使用我的工作副本而不是位于以下位置的已
我正在考虑类似的事情 python3 my_script.py --pythonpath/path/to/some/necessary/modules 有这样的事情吗?我知道(我认为)Pycharm
关于 PYTHONPATH 和导入有很多类似的问题,但我没有找到我所需要的。 我有一个 git 存储库,其中包含一些 python 帮助程序脚本。这些脚本自然地组织在几个包中。像这样的东西: scri
我有一组脚本,它们是使用特定的 python 安装执行的(用第一行 # 设置!)。网络上有一些不同的 python 安装,不同的组有自己的设置和工作流程。一些组织指示人们在 shell 登录中修改 P
我一直在尝试按照这篇文章 Permanently add a directory to PYTHONPATH 上的建议将自定义目录添加到 PYTHONPATH .如果相关的话,我在 Mac 上使用 b
我正在运行一个显式设置 PYTHONPATH 以避免命名冲突的脚本。然而,即使我说 os.environ['PYTHONPATH'] = '',看起来系统仍然能够找到我在脚本之外“存在”的旧路径。 即
正在尝试运行 runsnake给 ImportError: No module named wx 打开 ipython 或 python session 似乎工作正常: >>> import wx >
我试图列出新安装的 Xubuntu 12.04 中已安装的软件包: for d in `echo "${PYTHONPATH}" | tr ':' '\n'`; do ls "${d}"; done
我正在和我的团队一起开发几个不同的 Python 包。假设我们有 ~/src/pkg1、~/src/pkg2 和 ~/src/pkg3。我们如何将这些添加到 PYTHONPATH 而无需我们每个人都管
我知道我可以让 Python 忽略 PYTHONPATH 如果我用 -E 标志启动它。 但是如何让 pip 安装的脚本有这个标志? 我尝试了代码的“脚本”和“console_scripts”部分,如果
我是一名优秀的程序员,十分优秀!