如何组织python项目

时间:2018-02-04 08:22:18

标签: python python-3.x pycharm

我是python的新手并试图弄清楚如何以“正确的方式”做事并遇到以下问题:

我的项目结构看起来有点像:

├─packageA
│     functions.py
│     __init__.py
│
└─tests
      some_tests.py

packageA/__init__.py为空。

packageA/functions.py看起来像这样:

def some_function(x):
    return x*x

最后,tests/some_tests.py

import packageA.functions

if __name__ == '__main__':
    print(packageA.functions.some_function(2))

如果我使用pycharm运行test.py,它可以正常工作。但是,当我打开一个控制台并通过运行python.exe ./tests/some_tests.py来启动它时,我得到了

    Traceback (most recent call last):
  File ".\tests\some_tests.py", line 1, in <module>
    import packageA.functions
ModuleNotFoundError: No module named 'packageA'

在写这篇文章时,我发现pycharm将源文件夹添加到PYTHONPATH - 当我关闭它时,我得到了同样的错误。上面的文件夹结构是构建python项目的明智方法吗?如果没有,应该如何组织呢?

1 个答案:

答案 0 :(得分:1)

有几种选择。但是,similar SO question中接受的答案并不理想。

below answer通过在sys.path列表的开头显式添加父目录路径来解决您的问题。

import os, sys, inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0, parentdir) 

import packageA.functions