未找到Python venv模块

未找到Python venv模块,python,pip,python-venv,modulenotfounderror,pyvenv,Python,Pip,Python Venv,Modulenotfounderror,Pyvenv,我正在尝试在我的棒上创建一个可移植的venv来复制粘贴到某人,这样他就不需要在pc上安装python来运行我的python脚本。 我尝试在这里搜索解决方案,但可能因为我对python和环境不熟悉,所以找不到正确的答案 我从我的文件夹(Python)中的网站安装了Python 3.9.1版,并用它创建了一个环境: Python\pyver\py391\python -m venv pyenv 在venv中运行,其中显示: (pyenv) D:\CD_Inhalt\UpperLimb>whe

我正在尝试在我的棒上创建一个可移植的venv来复制粘贴到某人,这样他就不需要在pc上安装python来运行我的python脚本。 我尝试在这里搜索解决方案,但可能因为我对python和环境不熟悉,所以找不到正确的答案

我从我的文件夹(Python)中的网站安装了Python 3.9.1版,并用它创建了一个环境:

Python\pyver\py391\python -m venv pyenv
在venv中运行
,其中
显示:

(pyenv) D:\CD_Inhalt\UpperLimb>where python
D:\CD_Inhalt\UpperLimb\Python\pyenv\Scripts\python.exe
运行我的脚本时显示错误:

(pyenv) D:\CD_Inhalt\UpperLimb>UpperLimb.py
Traceback (most recent call last):
File "D:\CD_Inhalt\UpperLimb\UpperLimb.py", line 11, in <module>
import c3d
ModuleNotFoundError: No module named 'c3d'
这台计算机没有安装Python。运行打印(sys.path)显示以下内容:

(pyenv) D:\CD_Inhalt\UpperLimb>python
Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', 'D:\\CD_Inhalt\\UpperLimb\\Python\\pyver\\py391\\python39.zip', 'D:\\CD_Inhalt\\UpperLimb        
\\Python\\pyver\\py391\\DLLs', 'D:\\CD_Inhalt\\UpperLimb\\Python\\pyver\\py391\\lib',     
'D:\\CD_Inhalt\\UpperLimb\\Python\\pyver\\py391', 'D:\\CD_Inhalt\\UpperLimb\\Python\\pyenv', 
'D:\\CD_Inhalt\\UpperLimb\\Python\\pyenv\\lib\\site-packages']
那么我在哪里犯了错误呢?我很困惑。感谢您的帮助:) 问候


编辑1:就像hoefling提到的那样。如果我编写
python UpperLimb.py
它就可以工作。如何将其作为可执行文件直接运行?如果您想在不使用python的情况下直接运行脚本,那么您必须告诉代码应该使用哪个程序来运行此代码

假设在/usr/bin/python上安装了python,那么必须在python文件中编写要使用的程序。在本例中,它是python

因此,UpperLimb.py文件中的第一行将是
#/usr/bin/python
。这一行将告诉程序使用位于/usr/bin/python的python程序

在此之后,您需要使此脚本可执行。可以使用以下命令使此文件可执行

$chmod+x UpperLimb.py

现在,您可以使用命令
/UpperLimb.py
按如下方式运行此文件,这是一个。让我先告诉你如何解决你的问题,然后在附录中解释你面临问题的原因

1) 解决问题:创建可移植应用程序 您最初的问题出现在第一段:您希望与他人共享您的python脚本/应用程序,而不是强迫用户安装python虚拟环境不是问题的解决方案。不过,它们是解决方案的一部分,因为任何应用程序开发都应该在虚拟环境中进行,以使您的项目相互隔离。虚拟环境是不可移植的;它们依赖于创建它们的机器上的python安装

如果你想分享你的代码,你有三个不同的选择

(1)创建和执行 许多人喜欢使用类似的工具,或者从python代码创建可执行文件。不过,也有陷阱。这些工具在简单的应用程序中工作得很好,但在使用大量静态文件、扩展模块(.dll)或依赖模块的
\uuuu file\uuuu
属性来访问文件系统上的文件的更大、更复杂的应用程序中,这些工具可能会带来麻烦。只需使用toolname进行简单的搜索,即可查看一些示例案例

(2)与可移植python共享代码 有可移植的python版本。例如,或来自Python.org的。您可以将它们与应用程序代码和运行
python.exe myscript
(使用相对路径)的简单
.bat
文件打包在一起。如果您有外部依赖项(某些软件包),您可以包括它们的
.whl
文件(从PyPI下载),并让您的
.bat
也安装它们。我以前使用非常复杂的python程序成功地实现了这一点,并将我的程序处理给了对python一无所知的最终用户。不过,这需要一些努力和手工工作

(3)使用pynsist
另一种方法是将其用于该工作。它用于分发python应用程序,但不生成单个“myapp.exe”。它基本上实现了“与可移植python共享代码”的自动化。它还创建了一个安装程序,您可以将其交给您的朋友使用,安装的程序将显示在Windows“开始”菜单和已安装的应用程序中。它甚至创建了一个快捷方式,您的用户将永远不必自己安装python,甚至不必知道您的应用程序是用python创建的


附录 一些关于你所面临问题的解释

A1)关于启动python脚本 启动python脚本时,通常键入
python myscript.py
。发生的情况是,您的操作系统(Windows)将在文件夹列表中搜索
python.exe
,当找到它时,它将使用该
python.exe
运行脚本。此文件夹列表称为PATH环境变量

激活脚本(
activate.ps1
用于powershell,而
activate.bat
用于cmd)的作用是将包含
python.exe
的虚拟环境文件夹添加到路径顶部,以便在运行时

python myscript.py
将使用虚拟环境中的
python.exe
(此处为
pyenv/Scripts/python.exe
),这也保证找到虚拟环境中安装的软件包

A2)只运行myscript.py 在Windows上,标准Python安装程序。我对它进行了测试,似乎是使用了特殊的(
py.exe
)。所以,当你只是打字的时候

myscript.py

在命令行上,它将作为
/py.exe myscript.py
运行。如果在文件资源管理器中双击
myscript.py
,也会发生完全相同的情况。如果愿意,您可以通过右键单击.py文件->打开->选择应用程序->选中“始终使用此应用程序”来更改默认程序,但这无助于解决您的问题。

可能是一个错误;尝试运行
python UpperLimb.py
,而不是直接将脚本作为可执行文件运行。如果这样做有效,并且您希望能够直接调用
UpperLimb.py
,请将其内容添加到问题中。
myscript.py