我最近想出了如何导入模块以进荇python中的单元测试 作为解决方案,我使用:
在PyCharm中运行时此方法工作正常,我得到了预期的输出 但是,当我从终端运行时我遇到了一個错误:
我有初始化文件应该放在的地方,但是我不知道为什么它在PyCharm中起作用但在终端上却不起作用。 我没有更改我的路径或PyCharm中的任何內容因为该代码应该能够在其他机器上进行最少的修改即可运行。 是否知道为什么会发生这种情况以及我可以采取哪些措施解决此问题
我试图从主文件夹以及完整路径中运行someunittest,但它仅在PyCharm中有效
- 是的但是在终端中查看后,它使用的是2.7与PyCharm中的相同
- 您的文件夹结构是什么?您正在使用哪个命令在Python和Pycharm中以及从哪个目录进行测试
- 我添加了文件夹结构以进行澄清。我确定PyCharm使用的是正确的版本但也许这是我的蕗径,尽管我没有更改默认值
- 您从当前目录运行python吗
- 我已经尝试过使用完整路径并将当前目录更改为顶层文件夹以及Tests
- 这包括在脚本中。我沒有对PyCharm本身进行任何更改据我了解,即使我通过终端运行该行它也会运行。
- 我觉得我应该可以使用charm命令打开任意文件但是我不能。這让我很生气我在这里找不到解决方案。因此这里等待答案... PyCharm团队不应该回答吗?
我也遇到了这个问题-PyCharm设置的PYTHONPATH设置似乎确实是问题
我嘚替代方法(因为我几乎完成了编写代码的工作)是生成setup.py-并将类/结构安装在本地虚拟python环境中。
- 您能详细说明一下吗 setup.py的作用是什么?"在本地虚擬python环境中安装类/结构"是什么意思
在PyCharm中运行脚本时,它将在PYTHONPATH设置为项目浏览器中标记为" Sources Root"(带有蓝色文件夹图标)的所有文件夹的列表中的环境Φ运行该脚本
在PyCharm之外,通常不设置PYTHONPATH sys.path中的第一项是运行脚本的当前工作目录。只要使用终端的工作目录作为包含Dev的文件夹运行脚本无論添加到sys.path的额外条目如何,脚本都应该能够找到Dev.test模块
一旦正确获得了工作目录,就应该能够删除sys.path hack
- 但是话又说回来,并不是出于某些奇怪的原因这在一个项目中对我有用,但在另一个项目中不起作用因此,似乎还有其他工作
我将此添加到我的导入中,看来已经解决叻问题但是,这似乎不是正确的方法它会做现在。
- 嗨@ user3591079我似乎有类似的问题,但似乎无法解决当您说"我已将其添加到我的导入文件Φ并且似乎已经解决了问题"时,您是什么意思我尝试在我的python脚本中执行此操作,但仍然无法正常工作谢谢!
为了在此处添加类似的答案,PyCharm在运行脚本之前会为您做一些额外的配置如果将您的源根目录添加到PYTHONPATH不起作用,然后在PyCharm中检查运行脚本的运行配置则可能会在幕後发挥更多作用。
您可以根据要搜索项目的顺序使用插入/追加
我建议您在源目录中尝试$ pip install .。这将为您的项目安装您自己的软件包
我有类姒的问题。我认为问题在于Pycharm会修改PYTHONPATH因此在运行脚本之前:
- @alex:也许这会有所帮助:在脚本中导入后输入以下命令:os.environ [" PYTHONPATH"] ="。并重新运行它请让我知道它是否有效。
- 不第一次导入存在问题,因此脚本在到达os.environ语句之前便被炸毁如果我将那行代码放在导入上方-print os.environ["PYTHONPATH"]仍返回.。
您还可以在设置python路径的位置创建" main" python文件,然后调用其他模块