【问题标题】:Function import from another file based on packaging (setup.py) leads to "No .egg-info directory found"基于打包(setup.py)从另一个文件导入函数导致“找不到.egg-info目录”
【发布时间】:2021-12-03 07:03:02
【问题描述】:

我的目标是从 dnn.py 中的 utils.py 文件中访问一个名为 train_test_split(...) 的函数。我的结构如下:

├───MachineLearning
│   └───src
│       ├───deep_learning
|           └─── dnn.py
|           └─── __init__.py
│       └───utils
|           └─── preprocessing.py
|           └─── __init__.py
│   └───readme.md
│   └───setup.py

我不想使用或更改我的 Windows 路径,因为它也应该在从我的 github 克隆的其他计算机上运行。我找到的解决方案是使用 setup.py 文件。我花了很长时间试图理解它是如何工作的,最终得到了上面的结构。 我的 setup.py 文件包含以下内容:

from setuptools import setup, find_packages

setup(
    name='example',
    version='0.1.0',
    packages=find_packages()
)

现在,当我从根文件夹 (MachineLearning) 运行 pip install -e . 时,我收到以下错误:

(tf38_clone) F:\Code\MachineLearning>pip install -e .          
Obtaining file:///F:/Code/MachineLearning
  Preparing metadata (setup.py) ... done
ERROR: No .egg-info directory found in C:\Users\Nick\AppData\Local\Temp\pip-pip-egg-info-pvq_am4y

谁能指出我正确的方向?我唯一想要的是将我的函数导入到另一个 .py 文件中,如上所述。

【问题讨论】:

    标签: python pip python-import setup.py python-packaging


    【解决方案1】:

    如果你的

    目标是从 dnn.py 中的 utils.py 文件中访问一个名为 train_test_split(...) 的函数

    你也写过

    我唯一想要的是将我的函数导入到另一个 .py 文件中,如上所述。

    那么你应该在你的dnn.py 开头尝试from utils import train_test_split 从另一个模块导入函数。无需为此用例创建包。更多关于python模块的信息可以在here找到。

    但是,如果您想安装一个可编辑的包,您需要先构建一个(即python -m build),这将在您的堆栈跟踪中创建*.egg-info。您可以阅读有关包装的更多信息here

    【讨论】:

    • 感谢您的回复,马塞尔!当我使用'from utils import train_test_split'时出现此错误:'ModuleNotFoundError: No module named 'utils'' 我错过了什么?
    • 您是否尝试将__init__.py 添加到src?我认为这是必需的,因为它是您的模块层次结构的一部分。如果它不起作用,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2017-09-12
    • 2022-07-01
    • 1970-01-01
    • 2014-03-26
    • 2017-08-12
    • 2014-02-21
    相关资源
    最近更新 更多