gpt4 book ai didi

python - 在 Python 中设置我的应用程序路径的正确方法

转载 作者:行者123 更新时间:2023-12-05 07:13:06 27 4
gpt4 key购买 nike

我对如何在 Python (Python 3.x) 中正确创建路径有疑问。

我使用以下目录结构用 Python 开发了一个小型抓取应用程序。

root
├── Dockerfile
├── README.md
├── tox.ini
├── src
│   └── myapp
│   ├── __init__.py
│   ├── do_something.py
│   └── do_something_else.py
└── tests
├── __init__.py
├── test_do_something.py
└── test_do_something_else.py

当我想运行我的代码时,我可以转到 src 目录并使用 python do_something.py但是,因为 do_something.py 有一个来自 do_something_else.py 的导入语句,所以它失败了:

Traceback (most recent call last):
File "src/myapp/do_something.py", line 1, in <module>
from src.myapp.do_something_else import do_it
ModuleNotFoundError: No module named 'src'

所以,我最终决定使用下面的命令来指定python路径: PYTHONPATH=../../ python do_something.py以确保看到该路径。

但是,提供路径以便我的应用程序可以运行的更好方法是什么?我想知道这一点,因为当我通过 tox 运行 pytest 时,我将运行命令 tox 的目录将位于根目录,以便 tox 包可以看到 tox.ini。如果我这样做,那么我很可能会遇到类似的问题,因为 Python 路径设置不正确。

我想具体问的问题是:

  1. 像这样创建我自己的项目时,我应该在哪里运行我的主要代码?根就像python src/myapp/do_something.py ?或者,转到 src/myapp 目录并运行 python do_something.py
  2. 一旦确定了我应该执行程序的目录,从其他py文件导入模块的正确方法是什么?可以用from src.myapp.do_something_else import do_it吗(这意味着我必须从 src 目录添加路径)?或者,不同的导入方式?
  3. 有哪些方法可以让我的 Python 识别路径?我知道有几种方法可以访问通行证,如下所示:

    一个。写export PYTHONPATH=<path_of_my_choice>:$PYTHONPATH使临时访问的路径,或者在我的 .bashrc 中写入该行以使其永久化(但是当我想通过 ansible 或其他自动化工具自动创建 Python 环境时很难重现)

    import sys; sys.path.append(<root>)将根作为可访问路径

    使用 pytest-pythonpath 包(但这并不是一个通用的答案)

非常感谢您的意见!

我的环境

OS: MacOS and Amazon Linux 2
Python Version: 3.7
Dependency in Python: pytest, tox

最佳答案

我建议使用 setup.py 将它变成一个 python 包。然后你可以在开发模式下安装它python setup.py develop。这样,它将在您的 python 环境中可用,而无需指定 PYTHONPATH。

为了测试,您可以简单地安装包 python setup.py install

希望对您有所帮助。

关于python - 在 Python 中设置我的应用程序路径的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com