sách gpt4 ai đã đi

Thư mục Python địa ngục

In lại 作者:行者123 更新时间:2023-12-04 10:07:07 28 4
mua khóa gpt4 Nike

这是我的目录结构:

├── src
│ ├── helpers
│ │ ├── __init__.py
│ │ ├── foo.py
│ │ └── bar.py
│ ├── services
│ │ ├── __init__.py
│ │ ├── faz.py
│ │ └── baz.py
│ └── main.py
├── tests
│ ├── helpers
│ │ ├── test_foo.py
│ │ └── test_bar.py
│ ├── services
│ │ ├── test_faz.py
│ │ └── test_baz.py


của tôi src/helpers/__init__.pyNhư hình dưới đây:

from .foo import Foo
from .bar import Bar

src/services/__init__.py好像:

from .faz import Faz
from .baz import Baz

của tôi src/main.py :

import helpers

f = helpers.Foo()

của tôi tests/helpers/test_foo.py :

import src.helpers as helpers

def test_foo():
f = helpers.Foo()

所有这些 作品 .

但是,我的问题是什么时候,比方说, src\services\faz.py引用资料 src\helpers\foo.py .

目前, ...\faz.pyNhư hình dưới đây:

import helpers

class Faz():
def DoSomething(self):
# something

如果我运行 python src/main.py,这将有效.但是如果我运行 coverage run -m pytest ,我收到错误 ModuleNotFoundError: No module named 'helpers' .如果我将导入语句更改为 import src.helpers ,测试有效,但应用程序不再有效。

我该如何解决?

Cảm ơn!

1 Câu trả lời

我认为你需要把它变成一个可安装的 python 包。您只需执行普通的 python 包导入,而不是破解路径。假设该产品名为“foopackage”,您可以添加 src/foopackage 并包含 setup.py 文件。

├── src
│ ├── foopackage
│ │ ├── helpers
│ │ │ ├── __init__.py
│ │ │ ├── foo.py
│ │ │ └── bar.py
│ │ └── services
│ │ ├── __init__.py
│ │ ├── faz.py
│ │ └── baz.py
│ └── scripts
│ └── main.py
├── tests
│ ├── helpers
│ │ ├── test_foo.py
│ │ └── test_bar.py
│ ├── services
│ │ ├── test_faz.py
│ │ └── test_baz.py
├── setup.py

Bạn có thể sử dụng python setup.py bdist_wheel 打包您的产品或其他选项。或者进行“开发”安装。设置一个python虚拟环境,当你想测试时,在这个目录的根目录下做 pip install -e . (“可编辑”设置它以便 python 从这个本地目录而不是常规的 python 模块目录中获取你的包)。现在类似于 nosehoặc pytest可以扫描树以查找任何名为 test_xxx.py 的内容并运行它。
main.py ,脚本和各种测试模块都只是
import foopackage.helpers as helpers

src/services/faz.py 将
from .. import helpers

Python 打包是一种黑暗艺术,但却是极简主义 setup.py将会
#!/usr/bin/env python

from setuptools import find_packages, setup

setup(
name='foopackage',
version='1.0.0',
description='Foo all the Bars',
packages=find_packages('src'),
package_dir={'': 'src'},
scripts=['src/scripts/main.py']
)

关于Python 目录 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61529706/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com