2015-07-10 59 views
12

我最近想出了如何在python中导入单元测试模块。作为这个解决方案,我使用:Python在PyCharm中工作,但不是从终端

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 

我有初始化文件,他们都应该是,但我迷路了,为什么这是工作在PyCharm但不从终奌站。我没有改变我的路径或任何PyCharm,因为这段代码应该能够在其他机器上进行最小限度的修改。任何想法,为什么会发生这种情况,以及我可以做些什么来解决这个问题?

我的文件夹结构如下

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

我试图从主文件夹someunittest运行,以及一个完整的路径,但它只是在PyCharm

工作
+0

是的,但在查看终端后,它使用2.7,与PyCharm相同 – user3591079

+2

什么是您的文件夹结构?您使用哪些命令在Python和Pycharm中以及从哪个目录进行测试? – Kupiakos

+0

我添加了我的文件夹结构以进行说明。我确信PyCharm正在使用正确的版本,但可能它是我的路径,尽管我没有从默认值改变它。 – user3591079

回答

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

我加入这我的进口和它似乎已经解决了这个问题。但是,这似乎并不是正确的做法;它现在会做。

+0

Hi @ user3591079。我似乎有类似的问题,但似乎无法修复它。当你说“我把这件东西加进我的进口产品中,似乎解决了问题时,你的意思是什么。”我试着在我的python脚本中这样做,但它仍然无法工作。谢谢! –

+0

对于我来说,这会导致像'ValueError:substring not found'这样的错误。你能提供任何指导吗? – alex

2

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

在PyCharm之外,通常不会设置PYTHONPATHsys.path中的第一项涉及脚本运行的当前工作目录。只要您使用终端的工作目录运行脚本作为包含Dev的文件夹,它应该能够找到Dev.test模块,而不管添加到sys.path的额外条目如何。

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

+3

但是,这又不是因为一些奇怪的原因。这在一个项目中适用于我,但不适用于另一个项目。所以似乎还有其他工作。 – Zelphir

1

我也有这个问题 - 并且由PyCharm设置的PYTHONPATH设置似乎是问题。

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

希望这会有所帮助..

+0

你能详细解释一下吗? 'setup.py'确实做了什么? “在我的本地虚拟python环境中安装类/结构”是什么意思? – alex

-1

我有类似的问题。我认为这个问题是Pycharm运行脚本之前修改PYTHONPATH这样:其中蟒蛇文件驻留

  • 运行出口PYTHONPATH =

    1. cd到文件中。
    2. 运行脚本

    你也可以创建你设置Python路径,然后调用其他模块

  • +0

    这不但对我不起作用,而且对于Windows 7的Git Bash,'echo $ PYTHONPATH'返回''' - 不是实际的路径。 – alex

    +0

    @alex:也许这将有助于更多:在脚本中导入后输入以下命令:os.environ [“PYTHONPATH”] =“。”并重新运行它。请让我知道它是否有效。 – mark

    +0

    @alex是否有效? (在脚本中输入后立即放入os.environ [“PYTHONPATH”] =“。”) – mark

    0

    我会建议你的源代码目录尝试$ pip install .“主” Python文件。这会为你的项目安装你自己的软件包。

    +0

    哪个“源码目录”? “pip安装”究竟做了什么? – alex

    相关问题