在使用python虚拟环境时,可以使用requirements.txt来管理当前项目的依赖。
注意,不要用 pip freeze > requirements.txt 这个命令,因为它会引入很多无关的包。
可以使用 pipreqs ./ --encoding=utf-8
./ 表示当前项目的目录,--encoding=utf-8 是为了避免报错(编码相关)
Note Why to use pipreqs
? Because pip freeze
will collect all dependencies from the environments. While pipreqs
will collect requirements used only in the current project!
pipreqs 生成的依赖就是你在项目中 import 的,但是可能会有遗漏(需要手动补全)
pycharm 自带的 sync 的原理和 pipreqs一致
下载包时 pip install -r requirements.txt 即可
可以使用 下面的命令来展示当前项目的依赖树:
pipdeptree --python D:\XXXX\venv\Scripts\python.exe
colorlog==6.8.0
└── colorama [required: Any, installed: 0.4.6]
concurrent-log==1.0.1
└── portalocker [required: >=1.5.2, installed: 2.8.2]
└── pywin32 [required: >=226, installed: 306]
grpcio==1.31.0
└── six [required: >=1.5.2, installed: 1.16.0]
influxdb==5.3.0
├── msgpack [required: ==0.6.1, installed: 0.6.1]
├── python-dateutil [required: >=2.6.0, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── pytz [required: Any, installed: 2023.3.post1]
├── requests [required: >=2.17.0, installed: 2.31.0]
│ ├── certifi [required: >=2017.4.17, installed: 2023.11.17]
│ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
│ ├── idna [required: >=2.5,<4, installed: 3.6]
│ └── urllib3 [required: >=1.21.1,<3, installed: 2.1.0]
└── six [required: >=1.10.0, installed: 1.16.0]
pandas==1.0.5
├── numpy [required: >=1.13.3, installed: 1.20.0]
├── python-dateutil [required: >=2.6.1, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
└── pytz [required: >=2017.2, installed: 2023.3.post1]
pip==22.3.1
protobuf==3.20.2
psutil==5.9.3
pyarrow==2.0.0
└── numpy [required: >=1.14, installed: 1.20.0]
pymysql-pool==0.3.7
└── PyMySQL [required: >=0.7.10, installed: 1.1.0]
redis==3.5.3
setuptools==65.5.1
wheel==0.38.4