python 常见问题备忘
1. 查看项目依赖项并输出到文件命令
pip freeze > requirements.txt
自动为当前项目安装依赖项:pip install pipreqs
根据 requirements.txt 安装依赖项:pip --default-timeout=50000 install -r C:\xxxx\requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2. 创建新环境,并切换到新环境
virtualenv newenv1
cd newenv1
newenv1\Scripts\activate.bat
3. C++ 调用 python 时不安装 python 调用 python 代码
目标目录下需要有python27.dll, python27.zip, Test001.py, xxx.exe(C++代码编译成的exe), 即可运行。D:\Python27\Dlls和D:\Python27\Lib, 把这两个目录下的文件拷贝在一起, 压缩成zip文件, 并且命名为python27.zip。python27.dll 在 python 安装目录下可以找到。python27.dll, python27.zip, xxx.exe必须在同一个目录。
4. 安装包 pip install xxx,安装指定版本用 pip install xxx=2.3.0,卸载 pip uninstall xxx,升级 pip 版本:python.exe -m pip install --upgrade pip
5. 查看已安装的包 pip show xxx,升级包版本 pip install --upgrade cython
6. 设置国内镜像源(https问题很麻烦)
a) 临时使用(使用清华源) pip install xxx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
b) 永久使用 pip config set global.index-url http://pypi.douban.com/simple
c) 取消使用镜像源 pip config unset global.index-url
可使用的镜像源有:
1、华南理工大学镜像源
http://pypi.hustunique.com/simple/%29
2、清华大学
https://pypi.tuna.tsinghua.edu.cn/simple
3、豆瓣(不是https)
http://pypi.douban.com/simple/
4、清华大学开源镜像站
https://mirrors.tuna.tsinghua.edu.cn/
5、网易开源
http://mirrors.163.com/
6、华为
https://mirrors.huaweicloud.com/
7、阿里巴巴
https://opsx.alibaba.com/mirror/
如果能连接上只是网速慢,经常超时可以用 pip --default-timeout=50000 install xxx,设置足够长的超时时间
7.如何与C语言或C++语言互调
a.使用cython,编写setup.py,然后再执行 python setup.py [可选参数] 即可编译成 pyd,可以通过C语言或C++调用。
默认为C代码,文件顶部加 # distutils: language = c++ 使其它生成可调用的C++代码。
b.也可以把扩展名为py的文件扩展名改为pyx,即可使用cython语法调用 c 或 c++,编写 setup.py 执行 python setup.py [可选参数] 即可编译成 pyd。
8. python 中相对路径如何引入父路径模块,见如下代码。当前目录用一个点,如果要引入更上层目录模块,将两个点换成三个点,以此类推。
from ..parent_directory import mymodule
9. 各种目录获取和设置
获取当前工作目录:os.getcwd()
设置当前工作目录:os.chdir(dir)
获取绝对路径:os.path.abspath('.')
设置项目环境目录:sys.path.insert(0,"c:\abc\def") 或 sys.path.append("c:\abc\def")
10. python 如何查看某个模块提供了哪些方法以及参数列表
导入模块:import+模块名
查看模块名里面的所有函数:dir(模块名)
查看模块里面的某个函数:help(模块名.函数名)
11. python 简单的类定义及私有成员定义
class Detail: def __init__(self,FN,LN): self.__firstname = FN self.__lastname = LN print("Done!") d1=Detail("Rea","Messi") print(d1._firstname) #私有成员,无法访问 print(d1._lastname) #私有成员,无法访问
12. 定义全局变量
cdef int code = 0; cdef int getTestCode(): global code code += 1 return code def test(): print(getTestCode()) print(getTestCode()) print(getTestCode())