繁体   English   中英

如何在 Linux 服务器中设置新用户以使用 Python?

[英]How to set up a new user in a linux server to work with Python?

我在 linux 服务器中添加了一个新用户。

虽然我可以运行简单的 python 脚本,但新用户在导入我可以上传的包时出错。

例如

import matplotlib as plt

回报

no module named 'matplotlib'

那是因为你可能做了:

pip install --user matplotlib

在你身边安装 matplotlib。

您有多种解决方案,这里有一个非详尽的解决方案(为此目的,docker 可能会被过度使用),从最差到最好的顺序排列:

这可能有多种原因。

matplotlib 安装为用户

如果您在不同的用户帐户中使用pip install --user package安装了 matplotlib。 不要指望其他用户可以使用该软件包,这不会发生。

使用pip install package以便在系统范围内对所有用户可用。

笔记。 根据您的特定设置,您可能需要提升权限。

matplotlib 安装在不同的 python 版本中

无论您如何安装软件包(见上文),您可能已将其安装在与您尝试运行的版本不同的版本中。

为确保您可以导入包,如在python -m package ,请使用python -m pip install package 这将确保用于安装的 Python 解释器与用于执行的相同。

更好的方法

一种更标准的方法

学习和使用虚拟环境。 它们用于处理每个项目而不是每个系统的 python 解释器安装。 允许您将依赖包与系统的 python 包隔离。

一种稍微先进的方法

我将借此机会分享一个为我处理这些废话的小 Makefile。 管理 development 文件夹中的虚拟环境,并使其与在requirements.txt中设置的任何包保持同步。

调用make test足以在具有正确包的环境中运行测试套件(或您可能配置的任何其他内容)。

.PHONY: test

# directory to store virtual environment
VENV_NAME=venv

# python runtime version
PYTHON_VER=3.7

# python executble
PYTHON=${VENV_NAME}/bin/python${PYTHON_VER}

# pip requirements file
REQUIREMENTS=requirements.txt

venv:           ## Recreates the virtual environment if needed.
venv: $(VENV_NAME)/bin/activate
$(VENV_NAME)/bin/activate: ${REQUIREMENTS}
    test -d $(VENV_NAME) || virtualenv -p python${PYTHON_VER} $(VENV_NAME)
    ${PYTHON} -m pip install -U pip
    ${PYTHON} -m pip install -r ${REQUIREMENTS}
    touch $@

test:           ## Runs the test suite.
test: venv
    $(PYTHON) -m pytest tests

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM