我在macosx机器上使用virtualenv和virtualenvwrapper。我的项目布局是:
/Users/mrafayaleem/Projects/imagemonster/ (project dir)
|---- imagemonster/
|---- server.py
|---- conf/
|---- settings.py
我在以下行中收到导入错误服务器.py公司名称:
^{pr2}$当我使用项目目录中的python imagemonster/server.py
运行它时。
在ipyhton
下运行它很好,我不明白为什么会发生这种情况。在
以下是系统路径对于两者:
Python:
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python27.zip
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-darwin
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-mac
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-mac/lib-scriptpackages
/Users/mrafayaleem/.virtualenvs/imagemonster/Extras/lib/python
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-tk
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-old
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/site-packages
iPython:
/Users/mrafayaleem/.virtualenvs/imagemonster/bin
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python27.zip
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-darwin
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-mac
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/plat-mac/lib-scriptpackages
/Users/mrafayaleem/.virtualenvs/imagemonster/Extras/lib/python
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-tk
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-old
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/site-packages
/Users/mrafayaleem/.virtualenvs/imagemonster/lib/python2.7/site-packages/IPython/extensions
/Users/mrafayaleem/.ipython
有人能帮我解决这个奇怪的行为吗?在
这不是因为virtualenv。 这是因为python和IPython之间的差异。也可以从当前目录中的中搜索路径。在this SO thread中也有类似的答案。在
您应该
cd
进入imagemonster目录,不要workon
virtualenv,然后尝试:并处理引发的导入错误。在
来得有点晚,但这可能有助于其他人寻找解决方案。Ipython同时使用当前的系统路径和当前的项目目录,但是在virtualenv中运行时,将只使用安装期间指定的当前python路径。必须将当前工作目录附加到模块导入声明中:
我会这样做:
这里的解决方案给出了更精确的解决方案,尤其是在virtualenv https://stackoverflow.com/questions/19876993/python-module-import-relative-paths-issue中工作时
相关问题 更多 >
编程相关推荐