繁体   English   中英

如何组织一个python项目

[英]How to organize a python project

我是 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项目的明智方法吗? 如果不是,应该如何组织?

有几种选择。 但是,在类似的 SO 问题中接受的答案并不理想。

以下答案通过在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM