为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确创建指向 Python 解释器的符号链接?

如何正确创建指向 Python 解释器的符号链接?

四季花海 2022-07-19 16:36:41
/home/sss/dev/venv/3.7在 Ubuntu 18.04 上,我在venv 站点包中安装了 Python 3.7 和虚拟环境/home/sss/dev/venv/3.7/lib/python3.7/site-packages-~/dev/venv/3.7/bin/python -m sitesys.path = [    '/home/sss/dev',    '/usr/lib/python37.zip',    '/usr/lib/python3.7',    '/usr/lib/python3.7/lib-dynload',    '/home/sss/dev/venv/3.7/lib/python3.7/site-packages',]USER_BASE: '/home/shane/.local' (exists)USER_SITE: '/home/shane/.local/lib/python3.7/site-packages' (exists)ENABLE_USER_SITE: False接下来,我在我的主目录中创建了一个符号链接,目标是虚拟环境中的 Python 解释器 -ln -s /home/sss/dev/venv/3.7/bin/python ~/pyls -l  pylrwxrwxrwx 1 sss sss 35 feb  5 08:52 py -> /home/sss/dev/venv/3.7/bin/python但是当我使用此链接代替时/home/sss/dev/venv/3.7/bin/python,我希望它可以访问中的包/home/sss/dev/venv/3.7/lib/python3.7/site-packages,但事实并非如此-./py -m sitesys.path = [    '/home/sss/dev',    '/usr/lib/python37.zip',    '/usr/lib/python3.7',    '/usr/lib/python3.7/lib-dynload',    '/home/sss/.local/lib/python3.7/site-packages',    '/usr/local/lib/python3.7/dist-packages',    '/usr/lib/python3/dist-packages',]USER_BASE: '/home/sss/.local' (exists)USER_SITE: '/home/sss/.local/lib/python3.7/site-packages' (exists)ENABLE_USER_SITE: True这个问题有解决方法吗?
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我相信这是行不通的。事项的地点py。为了考虑到虚拟环境,py会在相对于自己的位置寻找一些特定的文件。例如,它会查找../pyvenv.cfg并且如果找不到该文件,则虚拟环境将被完全忽略(在这种情况下它是否处于活动状态并不重要)。我相信py必须在虚拟环境的bin目录中,而不是其他任何地方。


不确定最初的意图是什么,但也许您可以编写一个py shell 包装器而不是符号链接,如下所示(只是一个示例,它可能需要改进才能真正有用):


#!/usr/bin/env sh


/home/sss/dev/venv/3.7/bin/python "$@"

这样的脚本可以放置在任何地方,并且总是会考虑到虚拟环境。


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信