我想做一个cli工具,并发现这是一个参考:https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html
因此,我创建了一个具有以下结构的目录
$ tree modules_and_packages
modules_and_packages
├── bin
│ ├── cli_script
│ └── cli_script~
├── __init__.py
├── setup.py
├── setup.py~
├── some_module.py
└── some_module.py~我可以通过pip安装模块,没有任何问题:
pip3 install ./modules_and_packages
Processing ./modules_and_packages
Installing collected packages: some-module
Running setup.py install for some-module ... done
Successfully installed some-module-0.0.0但是,当我在命令行上运行cli_script时,会得到以下错误:
Traceback (most recent call last):
File "/home/david/.local/bin/cli_script", line 3, in <module>
import modules_and_packages
ModuleNotFoundError: No module named 'modules_and_packages'以下是文件中的内容:
setup.py
from setuptools import setup
setup(
name='some_module',
py_modules=['some_module'],
scripts=['bin/cli_script']
)some_module.py
def some_func():
return 42bin/cli脚本
#!/usr/bin/env python3
import modules_and_packages
print('hello')如您所见,我只是尝试测试使用模块制作命令行工具的最简单情况。我在这里做错什么了?
编辑:
尝试导入some_module时,在尝试执行hoefling的建议后收到的错误消息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/david/.local/lib/python3.6/site-packages/some_module.py", line 1
def some_func():
^
SyntaxError: invalid character in identifier发布于 2020-04-12 09:47:22
您没有在发行版中包括modules_and_packages。这是因为您的项目结构是错误的-将其与您所引用的教程中的结构进行比较。它应该如下所示:
myproject
├── modules_and_packages
│ ├── __init__.py
│ └── some_module.py
├── setup.py
└── bin
└── cli_script现在,将modules_and_packages包包含到安装脚本中的dist:
# setup.py
setup(
name='some_module',
packages=['modules_and_packages'],
scripts=['bin/cli_script']
)如果您将setuptools.find_packages()函数用于包集合,则会变得更容易:
from setuptools import find_packages, setup
setup(
name='some_module',
packages=find_packages(),
scripts=['bin/cli_script']
)发布于 2020-04-12 09:45:54
你所遵循的指南是5岁,有点模糊。您可以像这样设置cli工具:
~ tree modules_and_packages
├── bin
│ └── cli_script
├── setup.py
└── some_module
├── __init__.py
└── some_module.pysetup.py
from setuptools import setup
setup(
name='some_module',
py_modules=['some_module'],
scripts=['bin/cli_script']
)某些模块/__init__..py
from .some_module import *某些模/某些模
def some_func():
return 42bin/cli脚本
#!/usr/bin/env python3
import some_module
print('hello')
print(some_module.some_func())然后在modules_and_packages目录中安装,运行:
~ python setup.py develop然后跑:
~ cli_script
hello
42https://stackoverflow.com/questions/61168583
复制相似问题