[英]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 可能会被过度使用),从最差到最好的顺序排列:
为所有人安装包,避免在使用 pip 时使用 --user
使用所有需要的包名称创建一个 requirements.txt,您的所有用户都可以执行pip install -r requirements.txt --user
创建一个 requirements.txt 并使用虚拟环境( https://docs.python.org/3/library/venv.html或https://docs.conda.io/projects/conda/en/latest/user-guide/任务/管理环境.html )
这可能有多种原因。
如果您在不同的用户帐户中使用pip install --user package
安装了 matplotlib。 不要指望其他用户可以使用该软件包,这不会发生。
使用pip install package
以便在系统范围内对所有用户可用。
笔记。 根据您的特定设置,您可能需要提升权限。
无论您如何安装软件包(见上文),您可能已将其安装在与您尝试运行的版本不同的版本中。
为确保您可以导入包,如在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.