这似乎是类似VM ().的问题。感谢所有评论!
我的虚拟主机(在Ubuntu20.04上)有一个奇怪的问题。我激活我的虚拟主机如下所示。
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的脚本安装了一个空包,这个脚本也是成功的。
(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运行它时,它运行得很好。
(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但是,当我将它作为独立脚本运行时,我会得到这个错误。
(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以下是已安装脚本的内容。
(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执行它时,它可以很好地工作,但当我作为独立脚本运行它时,它就不能工作了。
以下是脚本的内容。
(venv) aravind@vetinari:test_venv$ cat bin/test_version.py
#!/usr/bin/env python
import platform; print(platform.python_version())还有setup.py。
(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
)发布于 2021-09-27 20:51:35
啊,在the comment之后我看到你在分享一个文件夹。虚拟环境是操作系统特有的,因此它是不同的可执行文件(类似于here)。
MacOS venv只在MacOS上工作。Linux只在Linux上工作。在那个VM中从头开始创建venv。
file <path to python>应该显示不同的可执行文件,因此bash无法执行它,因为它不能在Linux上执行(不是ELF二进制文件)。
https://stackoverflow.com/questions/69352652
复制相似问题