Setup.py 安装。未找到程序包初始化文件 'graph\__init__.py'(或不是常规文件)
Setup.py install. Package init file 'graph\__init__.py' not found (or not a regular file)
我的目录结构:
Projects/
|- VirtualEnv/
|- Graph/
|- graph/
| |- __init__.py
| |- create_structure.py
|- setup.py
|- MANIFEST.in
setup.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
和运行 "start_graph"(来自setup.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'
为什么不起作用?我的错误在哪里?
看起来罪魁祸首可能是 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.txt
和 SOURCES.txt
文件。这些应该可以帮助您确定包装是否正确。
我的目录结构:
Projects/
|- VirtualEnv/
|- Graph/
|- graph/
| |- __init__.py
| |- create_structure.py
|- setup.py
|- MANIFEST.in
setup.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
和运行 "start_graph"(来自setup.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'
为什么不起作用?我的错误在哪里?
看起来罪魁祸首可能是 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.txt
和 SOURCES.txt
文件。这些应该可以帮助您确定包装是否正确。