pip:未找到安装为可编辑的模块

Mar*_*tok 7 python pip setuptools

我正在尝试使用 pip 将我自己的包的源签出安装为可编辑包,但它没有在安装时被拾取。\n是的,有很多相关的问题,但它们是主要是关于非标准目录结构。这看起来应该“正常工作”,甚至部分有效。

\n
# starting from an empty venv:\n(env) PS C:\\test> pip install -e C:\\path\\to\\my\\PySymCircuit\nObtaining file:///C:/path/to/my/PySymCircuit\n  Preparing metadata (setup.py) ... done\nCollecting sympy\n  Using cached sympy-1.9-py3-none-any.whl (6.2 MB)\nCollecting mpmath>=0.19\n  Using cached mpmath-1.2.1-py3-none-any.whl (532 kB)\nInstalling collected packages: mpmath, sympy, SymCircuit\n
Run Code Online (Sandbox Code Playgroud)\n

看起来不错,但是:

\n
(env) PS C:\\test> python -c \'import symcircuit\'\nTraceback (most recent call last):\n  File "<string>", line 1, in <module>\nModuleNotFoundError: No module named \'symcircuit\'\n(env) PS C:\\test> pip show SymCircuit\nWARNING: Package(s) not found: SymCircuit\n
Run Code Online (Sandbox Code Playgroud)\n

创建的链接文件是正确的(以及源目录中的egg-info),当我尝试卸载该包时,突然它被识别了。只是不是在重要的时候...

\n
(env) PS C:\\test> cat .\\env\\Lib\\site-packages\\SymCircuit.egg-link\nC:\\path\\to\\my\\PySymCircuit\n.\n(env) PS C:\\test> pip uninstall SymCircuit\nFound existing installation: SymCircuit 0.1.0\nUninstalling SymCircuit-0.1.0:\n  Would remove:\n    c:\\test\\env\\lib\\site-packages\\symcircuit.egg-link\nProceed (Y/n)? Y\n  WARNING: Cannot remove entries from nonexistent file c:\\test\\env\\lib\\site-packages\\easy-install.pth\n  Successfully uninstalled SymCircuit-0.1.0\n
Run Code Online (Sandbox Code Playgroud)\n

Plainsetup.py develop产生相同的链接,也无法使用。

\n

我缺少什么?

\n

来自同一源树的不可编辑安装按预期工作,所以我相信它与链接机制有关?

\n
\n

更新:显然该链接仅适用于 pip,重要的是 setuptools 应该将路径添加到easy-install.pth. 事实并非如此,因此卸载时会出现错误消息。\n现在的问题是,为什么...

\n
\n

按要求更新

\n

本地目录结构:git clone https://github.com/martok/py-symcircuit.git

\n
py-symcircuit\n\xe2\x94\x82   LICENSE\n\xe2\x94\x82   README.md\n\xe2\x94\x82   setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80.git\n\xe2\x94\x9c    ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80symcircuit\n\xe2\x94\x82       __init__.py\n\xe2\x94\x82       bode.py\n\xe2\x94\x82       spice.py\n\xe2\x94\x82       system.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80SymCircuit.egg-info\n        dependency_links.txt\n        PKG-INFO\n        requires.txt\n        SOURCES.txt\n        top_level.txt\n
Run Code Online (Sandbox Code Playgroud)\n

设置.py:

\n
#!/usr/bin/env python\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name="SymCircuit",\n    version="0.1.0",\n    author="Martok",\n    author_email="martok@martoks-place.de",\n    description="Symbolic electronic circuit analysis",\n    long_description=open("README.md","rt").read(),\n    long_description_content_type="text/markdown",\n    url="https://github.com/martok/py-symcircuit",\n    project_urls={\n        "Bug Tracker": "https://github.com/martok/py-symcircuit/issues",\n    },\n    license="MIT",\n    classifiers=[...],\n    packages=find_packages(),\n    python_requires=\'>=3.6\',\n    install_requires=[\n        "sympy",\n    ],\n    extras_require={\n        "EE": [\n            "networkx",\n            "numpy",\n            "mplotkit"\n        ],\n    },\n)\n
Run Code Online (Sandbox Code Playgroud)\n
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32 bit (Intel)] on win32\nPackage          Version  \n---------------- ---------\npip              21.3.1\nsetuptools       59.4.0\n
Run Code Online (Sandbox Code Playgroud)\n