设置.py安装。未找到包初始化文件“graph\\u init\.py”(或不是常规文件)

2024-06-28 19:51:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目录结构:

Projects/
|- VirtualEnv/
|- Graph/
   |- graph/
   |  |- __init__.py
   |  |- create_structure.py
   |- setup.py
   |- MANIFEST.in

你知道吗设置.py地址:

from setuptools import setup, find_packages

import graph

if __name__ == "__main__":
    setup(
        name='MyGraph',
        version='1.0',
        packages = find_packages("graph"),
        entry_points={
            'console_scripts':
                ['start_graph = graph.create_structure:go']
            },
        install_requires = [
            "pandas>=0.25.1",
            "teradatasql>=16.20.0.50"
        ],
        include_package_data=True
    )

我创建了virtualenv

virtualenv VirtualEnv/env

然后我安装软件包

VirtualEnv/env/Scripts/python Graph/setup.py install

之后我激活了virtualenv

source VirtualEnv/env/Scripts/activate

并运行“启动图”(命令从设置.py)得到了

Traceback (most recent call last):
  File "D:\Developers\kdnikish\Projects\VirtualEnv\env\Scripts\start_graph-script.py", line 11, in <module>
    load_entry_point('MyGraph==1.0', 'console_scripts', 'start_graph')()
  File "D:\Developers\kdnikish\Projects\VirtualEnv\env\lib\site-packages\pkg_resources\__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "D:\Developers\kdnikish\Projects\VirtualEnv\env\lib\site-packages\pkg_resources\__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "D:\Developers\kdnikish\Projects\VirtualEnv\env\lib\site-packages\pkg_resources\__init__.py", line 2443, in load
    return self.resolve()
  File "D:\Developers\kdnikish\Projects\VirtualEnv\env\lib\site-packages\pkg_resources\__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ModuleNotFoundError: No module named 'graph'

为什么不起作用?我的错在哪里?你知道吗


Tags: nameinpyenvvirtualenvinitpackagesline
1条回答
网友
1楼 · 发布于 2024-06-28 19:51:21

看起来罪魁祸首可能是packages参数。它可能应该是packages=find_packages()或者更明确地:packages=find_packages(src='.')。参见setuptools documentation on "Using find_packages()"。你知道吗

另外,在执行安装脚本时,最好与安装脚本位于同一目录中:

cd Graph
../VirtualEnv/env/Scripts/python setup.py install

您也可以从setup.py中删除import graph指令,我认为没有任何必要,而且它通常迟早会中断。你知道吗

然后为了调试,找到MyGraph.egg-info目录并查看top_level.txtSOURCES.txt文件。这些可以帮助你判断包装是否正确。你知道吗

相关问题 更多 >