在Ubuntu服务器中导入PYTHON包

gcmastyq  于 2022-09-19  发布在  Python
关注(0)|答案(1)|浏览(205)

我有一台访问受限的Ubuntu服务器。我将在那里主持我的申请。
我尝试运行使用服务器提供的缺省包的Python脚本。我想使用NumPy和其他模块。

由于我无法安装、下载或执行任何操作,所以我使用WSL在我的本地机器(Windows)上创建了一个python服务器来模拟Linux文件系统,并将python环境文件复制到应用程序目录并部署在云中。

问题是,无论我如何尝试,我都无法导入NumPy(或我复制的任何模块)。我将所有站点包移动到我的Python脚本所在的位置(因为当前脚本的路径将位于系统路径中),并尝试导入,但没有成功。请帮助我以任何可能或不可能的方式破解这一点。

在过去的6天里,我一直在努力做到这一点,但我做不到。
求求你,我必须不惜一切代价做到这一点。我已附上我的最新结构。

提前谢谢您。

我的文件夹结构屏幕截图:

编辑:

好的。让我把这件事搞清楚。我有一台Linux服务器(Ubuntu18.04),我在其中托管一个应用程序。从该应用程序中,我调用了一些用于机器学习目的的python脚本。它是受限服务器,我无法访问它。我发现Linux发行版的唯一方法是通过Java代码,使用“ProcessBuilder”调用一些终端命令。由于服务器受到高度限制,我无法运行任何Linux命令,如ECHO、SET、EXPORT、sudo、wget/curl等,因为Linux(默认情况下)已经提供了python3。我正在使用那个python3命令来调用我的python3脚本(使用“ProcessBuilder”从Java代码)并执行它们。

如果它是一个普通脚本(如果我使用的是Python标准库),那么它工作得很好。在我使用的其中一个脚本中,我使用了“Numpy”。所以,我想导入该模块。我是在Windows环境下进行开发的。因此,为了模拟用于导入包的Linux文件系统,我使用相同的Ubuntu版本在WSL中创建了一个虚拟环境,并安装了NumPy,然后用所需的文件替换了这些包中的所有符号链接。然后,我复制了整个环境并粘贴到我的资源目录(在Windows环境中)并进行部署。没什么好运气的。

因此,我在该环境中只为“Site-Packages”文件夹创建了一个压缩文件。然后,我复制了压缩文件并粘贴到我的资源文件夹中并进行了部署。没什么好运气的。我经常看到的错误是“numpy.core._Multiarrayumath”。所有的文章和在GitHub中也告诉我们重新安装该程序包。但是,我无法安装。我没有这样的权限。

不安装如何导入NumPy?如果有任何工作可以实现这一点,请解释,我会做的。即使它更难、更复杂、更耗时,我也能接受。我想要实现这一点。

bf1o4zei

bf1o4zei1#

让我以以下内容作为开场白:

  • 警告请检查您正在使用的服务器的AUP(可接受使用策略),和/或联系服务器管理员以确保您没有违反任何规则。
  • 我能想出相当多的理由来解释为什么这个办法*行不通。如果不是这样,那么可能仍然有解决办法,但它们在技术上将是复杂的。

所以如果我没弄错的话:

  • 您对服务器的访问非常有限;基本上只能上传(显然)和运行Java代码。
  • 您还可以上传Python代码,并通过ProcessBuild在Java代码中运行它。
  • 除通过ProcessBuild以外,您无权登录外壳、执行任意命令等。
  • 当然,您不能将站点包安装到系统Python环境中。

因此,最终,您可能需要做的事情如下:

  • 在WSL上创建一个Python3虚拟环境(这似乎不是您实际正在做的事情)。所谓的“Python3虚拟环境”,我指的是venv,它允许您使用包创建用户级(非系统级)目录。

所以类似于(从您的项目目录中):

python3 -v venv venv
source ./venv/bin/activate

您的路径将被调整,以便您的python3pip3命令将在venv路径中找到。pip3 install numpy将把它安装到这个虚拟环境中(而不是全局/系统Python)。

  • 将整个venv目录上传到服务器。你似乎已经有了某种方法来做这件事。
  • 您必须有某种方法通过ProcessBuilder运行Bash外壳。既然您有能力运行python3ProcessBuilder,我可以假设您也能够做到这一点。
  • 您需要(通过ProcessBuild)激活服务器上的虚拟环境,<path_to_project>/venv/bin/activate在同一个Bash外壳中运行您的代码。

这看起来类似于:

bash -c "source ./venv/bin/activate; python3 main.py"

相关问题