python3.8 -m venv venv # 生成一个venv目录,依赖包安装此下面,干净 source ./venv/bin/active
pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple/ pip3 config set install.trusted-host mirrors.aliyun.com
yum install -y gcc gcc-c++ \ zlib-devel libffi-devel openssl openssl-devel \ bzip2-devel gdbm-devel xz-devel readline-devel \ sqlite-devel libuuid-devel tk-devel tcl-devel ldconfig export CC=/opt/gcc84/bin/gcc; export CXX=/opt/gcc84/bin/g++ ; ./configure --prefix=/opt/python312 --enable-shared --enable-optimizations --with-openssl=/opt/openssl
–enable-optimizations(升级gcc至8.1.0才能使用)
python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。 由于在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了“ModuleNotFoundError: No module named '_ctypes'“的错误。
yum install libffi-devel
如果没有root权限安装libffi
先下载了libffi的源码, 用通常的命令编译它:
./configure --prefix=/home/user123/libffi make重新编译了python
./configure --prefix=/opt/python3 LDFLAGS='-L/home/user123/libffi/lib64' make
module _tkinter missing
某些情况下:
tcl/tk安装不完整,没有包含pkg-config的.pc文件,需要下载tcl/tk的源码编译。然后把编译出来的tk.pc和tcl.pc,拷贝到/usr/lib64/pkgconfig目录下就能被系统找到后再重新编译python 即可:
pkg-config --modversion tcl pkg-config --modversion tk pkg-config --cflags tcl pkg-config --libs tkpkg-config的示例:
# tcl pkg-config source file prefix=/opt/tcltk8614 exec_prefix=/opt/tcltk8614 libdir=/opt/tcltk8614/lib includedir=${prefix}/include libfile=libtcl8.6.so Name: Tool Command Language Description: Tcl is a powerful dynamic programming language URL: https://www.tcl-lang.org/ Version: 8.6.14 Requires.private: zlib >= 1.2.3 Libs: -L${libdir} -ltcl8.6 -ltclstub8.6 Libs.private: -ldl -lz -lpthread -lm Cflags: -I${includedir}
Pip 官网是 Python 包管理工具,,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 Pip使用指南
你可以通过以下命令来判断是否已安装:
pip --version pip list
如果你还未安装,则可以使用以下方法来安装:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 sudo pythonXX get-pip.py # 运行安装脚本
如果版本低,提示升级:
/opt/python382/bin/python3 -m pip --default-timeout=100 install --upgrade pip
如果出现如下错误:
ImportError: cannot import name 'sysconfig'
python3需要安装
sudo apt-get install python3-distutils
pip3 download -r requirements.txt -d ./packages/
pip3 install --no-index --find-links=./packages/ -r requirements.txt
/opt/python27/bin/python2.7 -m pip --default-timeout=100 install pipenv # 安装包 /opt/python27/bin/python2.7 -m pip --default-timeout=100 install --upgrade pipenv # 升级包 /usr/local/bin/python3.7 -m pipenv run python3 # 指定运行特定的 python 版本
一行命令搞定 virtualenv 和 pipfile 的初始化,它会在你的用户目录下对你的 virtualenv 进行统一管理。如果当前目录下有 requirements.txt 文件,它会非常贴心地帮你自动转换。(随后你就可以把 requirements.txt 扔掉了)
为某个项目创建虚拟环境。如指定目录
#cd /root/work [root@OPS-HGH-FDI-020 work]# pipenv --python /opt/python27/bin/python2.7.15 Virtualenv already exists! Removing existing virtualenv... Creating a virtualenv for this project... Pipfile: /disk/ssd1/work/Pipfile Using /opt/python27/bin/python2 (2.7.15) to create virtualenv... Also creating executable in /root/.local/share/virtualenvs/work-nByAQpyD/bin/python Installing setuptools, pip, wheel...done. Running virtualenv with interpreter /opt/python27/bin/python2 ✔ Successfully created virtual environment! Virtualenv location: /root/.local/share/virtualenvs/work-nByAQpyD
pipenv --three
pipenv --two
pipenv --python 3.6
pipenv --python pypy3
提高依赖库安装的速度,vi Pipfile
[[source]] url = "https://pypi.tuna.tsinghua.edu.cn/simple" verify_ssl = true name = "pypi"
也可以在 pip的命令行后面跟上国内清华镜像做加速:-i https://pypi.tuna.tsinghua.edu.cn/simple
[root@OPS-HGH-FDI-020 work]# pipenv shell Launching subshell in virtual environment... . /root/.local/share/virtualenvs/work-nByAQpyD/bin/activate
exit
pipenv install --dev
pipenv install requests
pipenv install parsel==1.3.1
pipenv update requests
pipenv update
pipenv uninstall requests
另外,Pipefile 和 Pipefile.lock 都会按照你的操作进行自动的更新,如果需要手动修改包的依赖条件,手工编辑 Pipefile 并进行安装即可。
加–system参数表示使用 pip 直接安装相应依赖,不创建虚拟环境。
RUN pipenv install --deploy --system
* * * * * /usr/local/bin/pipenv run python /home/ubuntu/work/getgold.py >> /tmp/gold.txt 2>&1
pipenv graph
能够更清晰地展示现有依赖包。
更新 lock 文件锁定当前环境的依赖版本
pipenv lock
如果你开发调试时需要配一堆环境变量,可以写到.env文件中,在pipenv shell进入虚拟环境时,它会帮你把这些环境变量加载好,非常方便。
例如写一个.env文件
echo "FOO=23333" > .env
之后pipenv shell进入虚拟环境,echo $FOO就能看环境变量的值23333已经设置好了。
python3.8 -m venv venv # 生成一个venv目录,依赖包安装此下面,干净 source ./venv/bin/active
git clone https://github.com/Julian-Nash/simple-flask-demo.git cd simple-flask-demo/ pip3.6 install -r requirements.txt -t . find ./ -name "__pycache__" | xargs rm -rf find ./ -name "*.dist-info" | xargs rm -rf mv run.py __main__.py cd .. python3.6 -m zipapp simple-flask-demo/ -c -p '/usr/bin/env python3.6' ./simple-flask-demo.pyz
mkdir py_fastapi ..... # 编写各种文件,过程略 mv run.py __main__.py # 下载zipapps pip3 install zipapps pip3 freeze > requirements.txt # 只打包虚拟环境 python3 -m zipapps -u AUTO_UNZIP -o vv.pyz -r ./py_fastapi/requirements.txt python3 vv.pyz ./py_fastapi
Poetry 是什么Poetry 和 Pipenv 类似,是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。你可以把它看做是 Pipenv 和 Flit 这些工具的超集。它可以让你用 Poetry 来同时管理 Python 库和 Python 程序。
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
poetry self update
poetry completions bash > /etc/bash_completion.d/poetry.bash-completion
[[tool.poetry.source]] name = "tsinghua" url = "https://pypi.tuna.tsinghua.edu.cn/simple"
poetry new pydemo
poetry add `cat requirements.txt`
poetry config --list poetry env info --path
~/.cache/pypoetry/virtualenvs/xxx
poetry show --tree / -t #查看可以更新的依赖 poetry show --outdated
poetry update / poetry update fastapi
poetry remove numpy