4

似乎 IPython 没有考虑到我的 PYTHONPATH,而普通的 python 解释器会这样做。我在Windows 7上。

我的 PYTHONPATH: C:\workspace\python; C:\Python27\Lib\site-packages\spyderlib; C:\Workspace\Python\awesim\awesim

打印 sys.path:

import sys
for i in sorted(sys.path):
    print i

这是我在 IPython 中获得的内容:

C:\JModelica.org-1.8\Python C:\Python27 C:\Python27\DLLs C:\Python27\lib C:\Python27\lib\lib-tk C:\Python27\lib\plat-win C:\Python27 \lib\site-packages C:\Python27\lib\site-packages\PIL C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\ipython-0.13-py2.7.egg C:\Python27\lib\site-packages\ipython-0.13-py2.7.egg\IPython\extensions C:\Python27\lib\site-packages\numpy-1.6.2-py2.7-win32.egg C: \Python27\lib\site-packages\openpyxl-1.5.8-py2.7.egg C:\Python27\lib\site-packages\pandas-0.8.1-py2.7-win32.egg C:\Python27\lib \site-packages\pyzmq-2.2.0.1-py2.7-win32.egg C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info C:\Python27\lib\site-包\sphinx-1.1.3-py2.7.egg C:\Python27\lib\site-packages\statsmodels-0.4.0-py2.7-win32.egg C:\Python27\lib\site-packages\tornado- 2.3-py2.7.egg C:\Python27\lib\site-packages\win32 C:\Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\wx-2.8-msw-unicode C:\Python27\scripts C:\windows\system32\python27.zip

在 python 控制台中也是如此:

C:\Python27 C:\Python27\DLLs C:\Python27\Lib\site-packages\spyderlib C:\Python27\lib C:\Python27\lib\lib-tk C:\Python27\lib\plat-win C: \Python27\lib\site-packages C:\Python27\lib\site-packages\PIL C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\ipython-0.13-py2.7 .egg C:\Python27\lib\site-packages\numpy-1.6.2-py2.7-win32.egg C:\Python27\lib\site-packages\openpyxl-1.5.8-py2.7.egg C: \Python27\lib\site-packages\pandas-0.8.1-py2.7-win32.egg C:\Python27\lib\site-packages\pyzmq-2.2.0.1-py2.7-win32.egg C:\Python27 \lib\site-packages\setuptools-0.6c11-py2.7.egg-info C:\Python27\lib\site-packages\sphinx-1.1.3-py2.7.egg C:\Python27\lib\site-包\statsmodels-0.4.0-py2.7-win32.egg C:\Python27\lib\site-packages\tornado-2.3-py2.7.egg C:\Python27\lib\site-packages\win32 C:\ Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\wx-2.8-msw-unicode C:\Workspace\Python\awesim\awesim C:\windows\system32\python27.zip C:\workspace\python

您可以看到正常的 python 控制台反映了 PYTHONPATH,但 IPython 输出没有。

预先感谢您的线索。

4

3 回答 3

4

显然,当 Python 和 IPython 的 sys.paths 不同时会发生这种情况。

对于 IPython,一些快速的临时解决方案是:

import sys
sys.path.append('your paths')

就我个人而言,我喜欢把它放在我正在处理的脚本中,以便包含我在项目目录中组织的模块,包括它们的子目录。(PS。不要​​忘记:如果主目录和所需的子目录包含(空)__init__.py 文件,则 python 在路径中包含子目录。)

一个永久的解决方案是创建一个新的 IPython 配置文件:

ipython profile create
ipython locate
/Users/username/.ipython

转到 ipython 配置文件并编辑:profile_default/ipython_config.py

添加以下内容

c.InteractiveShellApp.exec_lines = [
     'import sys; sys.path.append("you paths")'
 ]

这适用于 Linux,我猜也应该能够在 Windows 上运行。

于 2017-02-10T22:54:10.077 回答
2

从“开始”菜单链接的 .exe 启动器是由 setuptools 制作的,它们可能没有正确设置您的环境(我对 Windows 环境的了解不够肯定,或者是否可以修复)。

但是如果你从命令行启动 IPython,它肯定会正确地继承你的环境。

于 2012-08-31T17:00:38.473 回答
1

我刚刚在运行 Python 2.6 的 Linux 上解决了一个类似的问题。

事实证明,我的虚拟环境设置为忽略系统路径。

它是通过关闭所有 python 程序并运行来修复的:

virtualenv --system-site-packages ~
于 2014-10-04T19:40:24.190 回答