You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Parallels虚拟机Ubuntu 20.04下virtualenv脚本报bad interpreter错误咨询

问题原因

  • 项目所在的/media/psf/路径是Parallels虚拟机挂载的宿主机共享目录,该类共享文件系统默认挂载参数禁用了shebang解释器的执行权限:即使shebang中指定的Python解释器真实存在且可执行,Linux内核解析脚本首行shebang时仍会被权限规则拦截,因此抛出bad interpreter: Invalid argument错误。
  • 手动指定解释器执行/media/psf/.../python 脚本路径时不需要内核解析shebang,因此可以正常运行。

解决方案

方案1:调整共享目录挂载参数(永久生效)

修改虚拟机内的/etc/fstab文件,为共享目录挂载规则添加exec权限:

/media/psf /media/psf prl_fs sync,nosuid,nodev,relatime,exec 0 0

保存后执行sudo mount -a重新挂载共享目录即可解决问题。

方案2:将虚拟环境部署到虚拟机本地磁盘

将venv虚拟环境创建在Ubuntu本地目录(如~/projects/)而非共享文件夹下,可完全避开共享目录的权限限制。如果需要同步项目代码到宿主机,可使用Git等版本管理工具实现。

方案3:强制setuptools生成env格式的shebang

修改setup.py配置,添加build_scripts参数强制生成的脚本使用/usr/bin/env python作为shebang,激活虚拟环境后会自动匹配当前环境的Python解释器,绕过绝对路径shebang的解析限制:

from setuptools import setup, find_packages

setup(name='test_venv',
      version='0.0.1dev',
      description='Test',
      author='Aravind Sundaresan',
      maintainer='Aravind Sundaresan',
      packages=find_packages(),
      scripts=["bin/test_version.py",],
      # 新增以下配置
      options={
          'build_scripts': {
              'executable': '/usr/bin/env python',
          },
      },
      install_requires=[],
      zip_safe=False
      )

修改后重新执行pip install -e .重装包即可生效。

方案4:临时使用手动指定解释器的方式运行

不需要修改任何配置,运行脚本时主动带上虚拟环境Python解释器路径即可:

venv/bin/python venv/bin/test_version.py

内容的提问来源于stack exchange,提问作者Aravind Sundaresan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:18:04