Windows Anaconda环境下已安装的自定义Python包无法被脚本调用
解决Windows Anaconda环境下自定义Python包无法被脚本调用的问题
结合你的包结构和给出的setup.py代码,我梳理了几个关键问题和对应的解决方案:
1. 修复setup.py的包声明问题
你当前的setup.py里packages参数是手动列举子包,不仅容易遗漏(比如你写的'mynam...'明显没写完),还容易出错。推荐改用setuptools的find_packages()自动发现所有子包,而且setuptools是Anaconda默认自带的,比distutils功能更完善。
修改后的setup.py应该是这样:
from setuptools import setup, find_packages setup( name='myname', packages=find_packages(), # 自动发现所有myname下的子包 scripts=['bin/myname.py'] # 关键:把你的命令行脚本注册到环境中 )
2. 确保命令行脚本能被正确识别
Windows的Anaconda环境中,脚本需要被安装到环境的Scripts目录下才可以直接调用。上面的scripts参数就是干这个的——它会把bin/myname.py复制到环境的Scripts文件夹,并且自动处理Windows下的可执行关联(生成.exe或者.cmd文件)。
另外,记得给你的bin/myname.py加上shebang行(虽然Windows不依赖,但跨平台友好),并且确保脚本里的导入路径是正确的:
#!/usr/bin/env python # 上面是shebang行,Windows下可忽略,但加上没坏处 from myname.raster import raster1, raster2 from myname.config.config import some_config_func from myname.misc.misc import some_misc_func # 你的脚本逻辑...
3. 正确安装包到Anaconda环境
步骤如下:
- 打开Anaconda Prompt,激活你的目标环境:
conda activate your_env_name - 切换到你的
myname包的根目录(也就是包含setup.py的那个文件夹) - 执行安装命令:
- 如果是开发阶段(需要修改代码后立即生效),用开发模式安装:
pip install -e . - 如果是正式安装,用:
或者用pip install .python setup.py install,但pip方式更推荐,因为它会处理依赖和环境路径。
- 如果是开发阶段(需要修改代码后立即生效),用开发模式安装:
4. 验证安装是否成功
安装完成后,在激活的环境中执行:
myname.py
或者直接输入myname(因为Windows会自动识别脚本的关联),如果还是不行,检查以下几点:
- 确认你的Anaconda环境的
Scripts目录已经在系统PATH中:激活环境后,执行echo %PATH%,看是否包含类似C:\Users\你的用户名\anaconda3\envs\your_env_name\Scripts的路径 - 检查site-packages里是否有myname包:在Python中执行
import myname; print(myname.__file__),看是否指向正确的安装路径
内容的提问来源于stack exchange,提问作者fmonegaglia
相关产品推荐
相关产品推荐

