我最近开发了一个软件包my_package
,并在GitHub上托管它。为了便于安装和使用,我有以下setup.py
:
from setuptools import setup
setup(name='my_package',
version='1.0',
description='My super cool package',
url='https://github.com/my_name/my_package',
packages=['my_package'],
python_requieres='3.9',
install_requires=[
'some_package==1.0.0'
])
现在我正在尝试在conda环境中安装这个包:
conda create --name myenv python=3.9
conda activate myenv
pip install git+'https://github.com/my_name/my_package'
到目前为止一切顺利。如果我尝试在项目文件夹中使用它,一切都工作得很好。如果我尝试在项目文件夹外使用包(仍然在conda环境中),我会得到以下错误:ModuleNotFoundError: No module named 'my_package'
我在windows上工作,如果那重要的话。
编辑:
我正在验证python和pip都指向正确的版本:
which pip
which python
/c/Anaconda3/envs/my_env/python
/c/Anaconda3/envs/my_env/Scripts/pip
同样,当我运行:
pip show my_package
我得到我的包的描述。所以pip找到它,但只要我尝试在脚本中import my_package
,我就会得到所描述的错误。
我还验证了该包已安装在我的环境中。在/c/Anaconda3/envs/my_env/lib/site-packages
中有一个文件夹my_package-1.0.dist-info/
进一步:python "import sys, print(sys.path)">
显示/c/Anaconda3/envs/my_env/lib/site-packages
和其他路径。所以在路径。
检查是否在脚本中使用了一些指向其他Python解释器的显式shebang。
。使用系统默认的Python:
#!/bin/env python
...
在您的myenv
环境中,尝试先卸载您的包,做一个干净的测试:
pip uninstall my_package
还有,你的setup.py
: python_requieres——>python_requires .
我实际上试图安装你的setup.py,也得到了ModuleNotFoundError
-但因为它没有正确安装由于install_requires
:
ERROR: Could not find a version that satisfies the requirement some_package==1.0.0
所以,还要检查所有的安装都没有错误和警告。
希望对你有帮助。
首先我想指出的是(不是解决方案)关于你的以下陈述:
如果我尝试在项目文件夹中使用它[…]如果我尝试使用项目文件夹外的包[…]
我明白"项目文件夹"表示"my_package
";文件夹(在git存储库中)。如果是这种情况,我想指出您混合了两种情况:测试(远程)包安装,而在(本地)存储库中。这不一定是错的,但很容易出错。
当测试一个包的设置/安装过程时,确保移动到远离存储库的地方(例如,"/tmp/"(相当于Windows),最好使用一个新鲜的环境。这将消除"噪音"。在你的测试中
-
我要告诉你做的第一件事——如果还没有——是创建一个新的conda环境,并从一个空/新文件夹安装你的包。例如,
$ conda env create -n test_my_package ipython pip $ cd /tmp # equivalent temporary or new in your Windows $ pip install git+https://github.com/my_name/my_package
-
如果这不起作用(可能是您的pip' git+http代码的问题),请使用另一种方法:为您的包创建一个发布(例如,"
v1
"),然后通过指示zip包URL(从您的"my_package"获取)安装发布的版本。发布页面(Github):$ pip install https://github.com/my_name/my_package/archive/v1.zip