簡體   English   中英

Python setuptools - 沒有以 pip install 命名的模塊

[英]Python setuptools - no module named after pip install

我想使用 click 項目創建 python CLI,但我在打包它時遇到了問題。 我像這樣在mycli.py文件中創建了我的腳本


import click

from module1 import Service1


@click.group()
def mycli():
    pass

@mycli.command()
def dosth():
    click.echo(Service1().dosth())
...

我的目錄樹看起來像這樣

mycli/
├── __init__.py
├── module1
├── module2
├── requirements.txt
├── setup.py
├── mycli.py
└── venv

我添加了 setup.py 之類的

from setuptools import setup, find_packages
setup(
    name='mycli',
    version='0.1',
    packages=find_packages(),
    install_requires=[
        'click==8.1.3',
        ...
    ],
    entry_points={
        "console_scripts": [
            "mycli = mycli:mycli"
        ]
    },
)

我的 requirements.txt 看起來像

.

我運行pip install -r requirements.txt然后我嘗試運行mycli我得到了

Traceback (most recent call last):
  File "/Users/clydebarrow/Documents/IdeaProjects/mycli/venv/bin/mycli", line 33, in <module>
    sys.exit(load_entry_point('mycli==0.1', 'console_scripts', 'mycli')())
  File "/Users/clydebarrow/Documents/IdeaProjects/mycli/venv/bin/mycli", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/local/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 86, in load
    module = import_module(match.group('module'))
  File "/usr/local/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mycli'

如何解決? 謝謝

問題在於您的目錄結構。

您應該在mycli目錄的父目錄中有setup.pyrequirements.txt ,然后運行pip install -e . 在那個父目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM