我写了一个模块(文件my_mod.py夹中的文件文件my_module).目前,我正在cool_script.py使用驻留在该文件夹中的文件cur_proj.我已经使用File - open打开了PyCharm中的文件夹(我假设,因此,它是一个PyCharm项目).
在ProjectView(CMD-7)中,我可以看到我的项目cur_proj(红色)和"外部库"下的内容my_module.在cool_script.py中,我可以写
from my_module import my_mod as mm
Run Code Online (Sandbox Code Playgroud)
而PyCharm甚至为my_mod提出建议.到现在为止还挺好.
但是,当我尝试运行cool_script.py时,PyCharm告诉我 "没有名为my_module的模块"
这对我来说很奇怪,因为
A)在终端(OS 10.10.2)中,在python中,我可以导入模块没问题 - .bashrc中的PYTHONPATH中有相应的条目
B)在PyCharm中 - 设置 - 项目cur_proj - 项目解释器 - 在python解释器旁边的CogWheel - 更多 - 显示所选解释器图标的路径,PYTHONPATH的路径确实出现(我认为应该这样)
因此,当我尝试运行cool_script.py时,为什么会出现错误?- 我错过了什么?
笔记:
my_module正确的道路__init__.py文件(空文件)放入my_module和放入cur_projvirtualenv当我进入PyCharm运行 - 编辑配置时,对于我当前的项目,有两个选项带有复选标记:" 将内容根添加到PYTHONPATH "和" 将源根添加到PYTHONPATH ".当我同时取消选中时,我可以加载我的模块.
所以它现在有效 - 但为什么呢?
出现了更多问题:
我使用PyCharm作为Houdini中python代码的编辑器.每当我尝试导入主Houdini库(hou)时,我都会在PyCharm中标记错误.如果我包含代码段: -
try:
import hou
except ImportError:
# Add $HFS/houdini/python2.6libs to sys.path so Python can find the
# hou module.
sys.path.append(os.environ['HFS'] + "/houdini/python%d.%dlibs" % sys.version_info[:2])
import hou
Run Code Online (Sandbox Code Playgroud)
我的代码毫无问题地从Houdini和我选择的解释器执行.
我的问题在于PyCharm本身.编辑器将'import hou'标记为错误,并将导入此文件的所有后续文件标记为此文件导入的模块作为错误.因此,我放弃了类型提前功能,并获得了大量的错误消息,这使得很难发现真正的问题.
如何让PyCharm识别出hou模块的路径.
我已经尝试了几天谷歌这个问题的解决方案,但他们似乎都参考了我的PyCharm版本(Community Edition 3.4.1)中没有的标签和设置.我的"项目口译员"设置只有一个包列表,没有"路径"选项卡,如针对密切相关问题的许多"修复"中所述.
我在mac(OSX mavericks)上使用PyCharm来运行如下所示的简单脚本.它只是打印PATH变量.我在项目目录中有一个virtualenv.我在PyCharm中添加了一个Run Configuration并尝试使用不同的Pythons:
# file mytest.py
import os
print "PATH: ", os.environ['PATH']
Run Code Online (Sandbox Code Playgroud)
当我使用系统默认的python(/ usr/bin/python)运行时,它会为PATH打印正确的值(即我在.bash_profile文件中配置的PATH),它有点长并且包含许多目录.
但是当我选择venv的Python时,路径只减少到: /usr/bin:/bin:/usr/sbin:/sbin:/Users/myname/projects/myproj/venv/bin
如果我从终端窗口运行脚本,则不会发生这种情况.在这种情况下,它显示系统的python和venv python的正确PATH.如果我停用venv并运行,也不会发生这种情况venv/bin/python mytest.py.
任何人都知道如何在从PyCharm运行并使用venv时设置正确的PATH值?