首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在virtualenv中的python脚本由于错误“错误的解释器:无效的参数”而失败。

问我在virtualenv中的python脚本由于错误“错误的解释器:无效的参数”而失败。
EN

Stack Overflow用户
提问于 2021-09-27 20:02:48
回答 1查看 262关注 0票数 0

这似乎是类似VM ().的问题。感谢所有评论!

我的虚拟主机(在Ubuntu20.04上)有一个奇怪的问题。我激活我的虚拟主机如下所示。

代码语言:javascript
复制
aravind@vetinari:test_venv$ rm -r venv
aravind@vetinari:test_venv$ python -m venv venv
aravind@vetinari:test_venv$ source venv/bin/activate

然后,我用一个名为test_version.py的脚本安装了一个空包,这个脚本也是成功的。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ python -m pip install -e .
Obtaining file:///media/psf/Home/projects/test_venv
Installing collected packages: test-venv
  Attempting uninstall: test-venv
    Found existing installation: test-venv 0.0.1.dev0
    Not uninstalling test-venv at /media/psf/Home/projects/test_venv, outside environment /media/psf/Home/projects/test_venv/venv
    Can't uninstall 'test-venv'. No files were found to uninstall.
  Running setup.py develop for test-venv
Successfully installed test-venv

当我使用virtualenv python运行它时,它运行得很好。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ /media/psf/Home/projects/test_venv/venv/bin/python /media/psf/Home/projects/test_venv/venv/bin/test_version.py 
3.8.10

但是,当我将它作为独立脚本运行时,我会得到这个错误。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ /media/psf/Home/projects/test_venv/venv/bin/test_version.py 
bash: /media/psf/Home/projects/test_venv/venv/bin/test_version.py: /media/psf/Home/projects/test_venv/venv/bin/python: bad interpreter: Invalid argument

以下是已安装脚本的内容。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ cat /media/psf/Home/projects/test_venv/venv/bin/test_version.py 
#!/media/psf/Home/projects/test_venv/venv/bin/python
# EASY-INSTALL-DEV-SCRIPT: 'test-venv==0.0.1.dev0','test_version.py'
__requires__ = 'test-venv==0.0.1.dev0'
__import__('pkg_resources').require('test-venv==0.0.1.dev0')
__file__ = '/media/psf/Home/projects/test_venv/bin/test_version.py'
with open(__file__) as f:
    exec(compile(f.read(), __file__, 'exec'))

请注意,脚本中的shebang解释器(media/psf/Home/projects/test_venv/venv/bin/python)是存在的,当我使用那个python执行它时,它可以很好地工作,但当我作为独立脚本运行它时,它就不能工作了。

以下是脚本的内容。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ cat bin/test_version.py
#!/usr/bin/env python
import platform; print(platform.python_version())

还有setup.py。

代码语言:javascript
复制
(venv) aravind@vetinari:test_venv$ cat setup.py
#!/usr/bin/env python

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",],
      install_requires=[],
      zip_safe=False
      )
EN

回答 1

Stack Overflow用户

发布于 2021-09-27 20:51:35

啊,在the comment之后我看到你在分享一个文件夹。虚拟环境是操作系统特有的,因此它是不同的可执行文件(类似于here)。

MacOS venv只在MacOS上工作。Linux只在Linux上工作。在那个VM中从头开始创建venv。

file <path to python>应该显示不同的可执行文件,因此bash无法执行它,因为它不能在Linux上执行(不是ELF二进制文件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69352652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档