下载 Windows embeddable package (64-bit)安装包,注意是embeddable版本的,并不是传统安装包,同时版本也需要和开发项目的Python版本吻合:

随后将其解压到项目的,并且下载 get-pip.py https://bootstrap.pypa.io/get-pip.py文件,放入到刚刚解压的安装包内,放入之后的目录结构如下:

D:\work\YiJianBaPu\python310>tree /f  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  
    get-pip.py  
    libcrypto-1_1.dll  
    libffi-7.dll  
    libssl-1_1.dll  
    LICENSE.txt  
    pyexpat.pyd  
    python.cat  
    python.exe  
    python3.dll  
    python310.dll  
    python310.zip  
    python310._pth  
    pythonw.exe  
    select.pyd  
    sqlite3.dll  
    unicodedata.pyd  
    vcruntime140.dll  
    vcruntime140_1.dll  
    winsound.pyd  
    _asyncio.pyd  
    _bz2.pyd  
    _ctypes.pyd  
    _decimal.pyd  
    _elementtree.pyd  
    _hashlib.pyd  
    _lzma.pyd  
    _msi.pyd  
    _multiprocessing.pyd  
    _overlapped.pyd  
    _queue.pyd  
    _socket.pyd  
    _sqlite3.pyd  
    _ssl.pyd  
    _uuid.pyd  
    _zoneinfo.pyd

随后在项目的根目录执行命令:

.\python310\python.exe .\python310\get-pip.py

注意这里的python.exe并不是本地开发环境的Python,而是嵌入式解释器的Python。

此时我们的目录中多出两个文件夹Lib和Scripts:

D:\work\YiJianBaPu\python310>tree  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  
├───Lib  
│   └───site-packages  
│       ├───pip  
│       │   ├───_internal  
│       │   │   ├───cli  
│       │   │   │   └───__pycache__  
│       │   │   ├───commands  
│       │   │   │   └───__pycache__  
│       │   │   ├───distributions  
│       │   │   │   └───__pycache__  
│       │   │   ├───index  
│       │   │   │   └───__pycache__  
│       │   │   ├───locations  
│       │   │   │   └───__pycache__  
│       │   │   ├───metadata  
│       │   │   │   ├───importlib  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───models  
│       │   │   │   └───__pycache__  
│       │   │   ├───network  
│       │   │   │   └───__pycache__  
│       │   │   ├───operations  
│       │   │   │   ├───build  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───install  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───req  
│       │   │   │   └───__pycache__  
│       │   │   ├───resolution  
│       │   │   │   ├───legacy  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───resolvelib  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───utils  
│       │   │   │   └───__pycache__  
│       │   │   ├───vcs  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───cachecontrol  
│       │   │   │   ├───caches  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───certifi  
│       │   │   │   └───__pycache__  
│       │   │   ├───chardet  
│       │   │   │   ├───cli  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───metadata  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───colorama  
│       │   │   │   ├───tests  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───distlib  
│       │   │   │   └───__pycache__  
│       │   │   ├───distro  
│       │   │   │   └───__pycache__  
│       │   │   ├───idna  
│       │   │   │   └───__pycache__  
│       │   │   ├───msgpack  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───pkg_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───platformdirs  
│       │   │   │   └───__pycache__  
│       │   │   ├───pygments  
│       │   │   │   ├───filters  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───formatters  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───lexers  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───styles  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───pyparsing  
│       │   │   │   ├───diagram  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───pyproject_hooks  
│       │   │   │   ├───_in_process  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───requests  
│       │   │   │   └───__pycache__  
│       │   │   ├───resolvelib  
│       │   │   │   ├───compat  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───rich  
│       │   │   │   └───__pycache__  
│       │   │   ├───tenacity  
│       │   │   │   └───__pycache__  
│       │   │   ├───tomli  
│       │   │   │   └───__pycache__  
│       │   │   ├───truststore  
│       │   │   │   └───__pycache__  
│       │   │   ├───urllib3  
│       │   │   │   ├───contrib  
│       │   │   │   │   ├───_securetransport  
│       │   │   │   │   │   └───__pycache__  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───packages  
│       │   │   │   │   ├───backports  
│       │   │   │   │   │   └───__pycache__  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───util  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───webencodings  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───pip-23.3.1.dist-info  
│       ├───pkg_resources  
│       │   ├───extern  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───importlib_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───jaraco  
│       │   │   │   ├───text  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───more_itertools  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───platformdirs  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───setuptools  
│       │   ├───command  
│       │   │   └───__pycache__  
│       │   ├───config  
│       │   │   ├───_validate_pyproject  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───extern  
│       │   │   └───__pycache__  
│       │   ├───_distutils  
│       │   │   ├───command  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───importlib_metadata  
│       │   │   │   └───__pycache__  
│       │   │   ├───importlib_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───jaraco  
│       │   │   │   ├───text  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───more_itertools  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───tomli  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───setuptools-68.2.2.dist-info  
│       └───_distutils_hack  
│           └───__pycache__  
└───Scripts

随后修改python310._pth文件,将内容改成下面这样:

python310.zip  
.  
  
# Uncomment to run site.main() automatically  
import site

至此,嵌入式解释器就配置好了。

嵌入式安装依赖

此后,当我们需要安装依赖时,必须用嵌入式的解释器进行安装:

.\python310\python.exe -m pip install noisereduce -t E:\work\YiJianBaPu\python310\Lib\site-packages

上面的命令展示如何嵌入式安装依赖库noisereduce。

这里需要注意的时,解释器必须是嵌入式解释器.\python310\python.exe,同时通过-t参数来指定三方库的位置,也就是说,必须安装到项目的目录中,而不是系统的默认开发环境目录。

安装成功后,我们必须可以在项目的目录下可以找到这个库:

D:\work\YiJianBaPu\python310\Lib\site-packages>tree  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  
├───noisereduce  
│   ├───spectralgate  
│   │   └───__pycache__  
│   ├───torchgate  
│   │   └───__pycache__  
│   └───__pycache__

如此,依赖和解释器就紧密结合在一起了,换台机器,并不需要安装也可以直接启动。

最后修改:2024 年 10 月 22 日
钥匙你想请我喝酱香拿铁的话!