Python虚拟环境无法识别自身site packages问题排查与解决
问题解决:虚拟环境复制后脚本出现ModuleNotFoundError错误
问题背景
- 在机器#1创建名为
myenv1的Python虚拟环境,安装所需依赖包,执行pip3 freeze能正常查看完整包列表 - 将
myenv1文件夹归档复制到配置完全一致的机器#2,激活虚拟环境后pip3 freeze显示包列表正常,但运行依赖这些包的脚本时,出现ModuleNotFoundError: No module named 'impacket'错误 - 检查
sys.path确认虚拟环境的site-packages路径已包含在内
问题根因
运行的脚本首行shebang声明为#!/usr/bin/python3,该路径指向全局Python解释器。即使激活了虚拟环境,脚本仍会通过shebang指定的路径调用全局Python,而全局Python无法访问虚拟环境内安装的包。
解决方案
将脚本首行的shebang替换为虚拟环境内的Python解释器路径:
#!/path/to/my/virt_env/myenv1/bin/python3
修改后重新运行脚本,依赖包可被正常识别加载,问题解决。
内容的提问来源于stack exchange,提问作者Igor_M
相关产品推荐
相关产品推荐

