【问题标题】:setuptools not found when installing local package in development mode with pip使用 pip 在开发模式下安装本地软件包时找不到 setuptools
【发布时间】:2022-01-18 01:26:04
【问题描述】:

我正在开发一个 Python 包,并希望使用 pip 在开发模式下安装它。当我运行pip install 时,我得到一个ModuleNotFoundError 告诉我setuptools 丢失了:

$ pip install -e my-package/
...
  Running setup.py develop for my-package
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/user/my-package/setup.py'"'"'; __file__='"'"'/home/user/my-package/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix=
         cwd: /home/user/my-package/
    Complete output (3 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    ModuleNotFoundError: No module named 'setuptools'

这让我很困惑,因为我确实有 setuptools:

$ sudo apt-get install python3-setuptools
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-setuptools is already the newest version (45.2.0-1).
The following packages were automatically installed and are no longer required:
  espeak-ng-data gir1.2-gstreamer-1.0 libao-common libao4 libaudio2 libdotconf0 libespeak-ng1
  libfprint-2-tod1 libllvm9 libllvm9:i386 libpcaudio0 libsonic0 libspeechd2 python3-brlapi python3-click
  python3-colorama python3-louis python3-pyatspi python3-speechd sound-icons
  speech-dispatcher-audio-plugins xbrlapi
Use 'sudo apt autoremove' to remove them.
0 to upgrade, 0 to newly install, 0 to remove and 231 not to upgrade.

我可以在常规 python 中正确导入它:

$ python
Python 3.9.5 (default, Nov 23 2021, 15:27:38) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
>>> 

我什至可以调用给出错误的命令的确切部分,而我自己不会出错!

$ /usr/bin/python -c 'import io, os, sys, setuptools, tokenize'
$

为什么 pip 找不到 setuptools?还值得注意的是,pip install my-package 在没有 -e 标志的情况下可以在开发模式下工作。

我的 python/pip 可执行文件:

$ which python
/usr/bin/python            [a symlink to /usr/bin/python3.9]
$ which python3
/usr/bin/python3           [a symlink to /usr/bin/python3.8]
$ which pip
/home/user/.local/bin/pip
$ which pip3
/home/user/.local/bin/pip3

【问题讨论】:

  • Linux 发行版和版本?
  • 这是 Ubuntu 20.04.1
  • 嗯,尝试这样运行...python -m pip install -e my-package
  • 出现完全相同的错误。我已经与一些同事对此进行了一些故障排除,并验证了所有 python/pip 版本都排列得很好,但我们都完​​全被难住了。没有-e 也能工作,但不能用它,真是令人沮丧! pip 与 -e 有什么不同,会导致这样的错误发生?
  • 您能否运行which pythonwhich python3which pipwhich pip3 并用它显示的内容更新您的问题。你还在使用 venv 或类似的东西吗?

标签: python python-3.x pip


【解决方案1】:

我之前遇到过这个问题,以下步骤对我有用。

  1. 使用 pip 安装 setuptools
    Pypi 页面:https://pypi.org/project/setuptools/.

    python -m pip install setuptools
    
  2. 确认setuptools 已安装。

    python -m pip list
    

  3. 再次尝试重新安装您的软件包。

    python -m pip install -e my-package/
    

【讨论】:

  • 这对我没有帮助。我已经安装了setuptools(刚刚再次验证),但我仍然收到错误消息。一定有其他事情发生
  • 执行pip3 list时是否可以使用setuptools?
【解决方案2】:

执行这个:

sudo python setup.py develop

最终从包目录工作。我无法解释为什么其他方法不起作用,但这是我的问题的解决方法。

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2021-04-04
    • 2016-06-20
    • 2015-01-18
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多