Python在PyCharm中工作,但不在终端上工作

时间:2015-07-10 19:19:56

标签: python python-2.7 pycharm

我最近想出了如何在python中导入用于单元测试的模块。作为解决方案,我使用:

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from Dev.test import someclass

这在PyCharm中运行时工作正常,我得到了预期的输出。但是,当我从终端运行时遇到错误:

ImportError: No module named Dev.test

我有 init 文件,但我不知道为什么这个文件在PyCharm中工作但不在终端上。我没有在PyCharm中改变我的路径或任何东西,因为这段代码应该能够在其他机器上以最小的修改运行。知道为什么会这样,以及我可以做些什么来修复它?

我的文件夹结构如下

-Current
-Dev
 -__init__.py
 -test
  - __init__.py
  -someclass.py
  -Tests
   -__init__.py
   -someunittest.py

我尝试从主文件夹运行someunittest以及完整路径,但它只适用于PyCharm

8 个答案:

答案 0 :(得分:1)

sys.path.append(os.getcwd()[:os.getcwd().index('Dev')])

我将此添加到我的导入中,似乎已解决了这个问题。但是,这似乎不是正确的做法;它现在会做。

答案 1 :(得分:1)

在PyCharm中运行脚本时,它会在PYTHONPATH设置为项目资源管理器中标记为“Sources Root”(带有蓝色文件夹图标)的所有文件夹列表的环境中运行它。

在PyCharm之外,PYTHONPATH通常不会设置。 sys.path中的第一个条目指的是运行脚本的当前工作目录。只要您使用终端的工作目录运行脚本作为包含Dev的文件夹,它就应该能够找到Dev.test模块,无论添加到sys.path的额外条目如何。< / p>

一旦你的工作目录正确,你应该能够删除sys.path黑客。

答案 2 :(得分:1)

我也遇到过这个问题 - 而PyCharm设定的PYTHONPATH设置似乎确实存在问题。

我的替代方法(因为我差不多完成代码编写)是生成一个setup.py - 并在我的本地虚拟python环境中安装类/结构。

希望这会有所帮助..

答案 3 :(得分:1)

Pycharm 使用虚拟环境。当您尝试在终端中运行程序时,此环境未处于活动状态。
您需要使用您的库构建或上传您的环境 Pycharm。 cd 到目录项目并在终端中写入

Sys.time()

答案 4 :(得分:0)

我建议您在源目录中尝试$ pip install .。这将为您的项目安装自己的包。

答案 5 :(得分:0)

@codewarrior关于PyCharm设置自己的PYTHONPATH的说法是正确的。但是sys.path没有我当前的工作目录。因此,为了解决这个问题,我更新了PYTHONPATH(或者您可以编辑sys.path)。

设置PYTHONPATH

export PYTHONPATH=$PYTHONPATH:`pwd`  (OR your project root directory)

更新sys.path

import sys
sys.path.insert(0,'<project directory>') OR
sys.path.append('<project directory>')

您可以根据想要搜索项目的顺序使用插入/添加。

HTH。

答案 6 :(得分:0)

要在此处添加类似的答案,PyCharm在运行脚本之前会为您做一些额外的配置。如果将您的源根目录添加到PYTHONPATH不起作用,然后在PyCharm中检查运行脚本的运行配置,则可能会在幕后发挥更多作用。

答案 7 :(得分:-1)

我有类似的问题。我认为问题是Pycharm在运行脚本之前修改了PYTHONPATH:

  1. cd到python文件所在的文件
  2. run export PYTHONPATH =。
  3. 运行脚本
  4. 您还可以创建“main”python文件,在其中设置python路径,然后调用其他模块