我有一台访问受限的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?如果有任何工作可以实现这一点,请解释,我会做的。即使它更难、更复杂、更耗时,我也能接受。我想要实现这一点。
1条答案
按热度按时间bf1o4zei1#
让我以以下内容作为开场白:
所以如果我没弄错的话:
ProcessBuild
在Java代码中运行它。ProcessBuild
以外,您无权登录外壳、执行任意命令等。因此,最终,您可能需要做的事情如下:
venv
,它允许您使用包创建用户级(非系统级)目录。所以类似于(从您的项目目录中):
您的路径将被调整,以便您的
python3
和pip3
命令将在venv
路径中找到。pip3 install numpy
将把它安装到这个虚拟环境中(而不是全局/系统Python)。venv
目录上传到服务器。你似乎已经有了某种方法来做这件事。ProcessBuilder
运行Bash外壳。既然您有能力运行python3
到ProcessBuilder
,我可以假设您也能够做到这一点。ProcessBuild
)激活服务器上的虚拟环境,<path_to_project>/venv/bin/activate
和在同一个Bash外壳中运行您的代码。这看起来类似于: