导航:首页 > 编程语言 > linuxpython扩展模块

linuxpython扩展模块

发布时间:2022-08-06 03:52:44

⑴ 如何在linux环境下添加python模块路径

本人python菜鸟一枚,在学习python过程中,经常要按照教程编写一些模块和函数练手,刚开始只是在python shell中编写,但是如果出错就会非常悲剧,又要从头开始编,而且重启python后也要重新编写模块。所以希望能像bash编程那样将脚本路径添加到环境变量中,这样修改起来也方便。以下内容均来源于网络及本菜鸟。

摘要:本文叙述了如何在linux环境下添加python模块的路径,第1部分介绍了如何查看python环境变量,第2部分介绍了如何将脚本放入python自带的环境变量目录中,第3部分介绍了如何将目录放入python的环境变量中重启python失效,第4部分介绍了如何为python添加永久环境变量目录。这些方法可以使模块的修改和重复使用更加方便,不用重复输入。



​1、首先,可以用python中的内建模块sys来查看python的环境变量。

​这些目录都是python的环境变量。

2.接下来本菜鸟尝试一下如果将提前写好的python脚本放入这些目录中,能不能在python中使用。别问为什么跑题,本菜就想试一试^ -^。

选择/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg这个目录,脚本名为my_mole.py,里面只有一个名为c_to_f的函数,用来计算从摄氏温度转换为华氏温度。

​可以看到,脚本已经位于刚开始选定的的目录下了。

我们现在来看看,在python中导入这个模块。并按照“模块.函数”的格式使用函数。

​可以看到,导入模块成功,其中的c_to_f函数也正确使用,10摄氏度=50华氏度。或者你在确定函数名不重名的前提下,可以from my_mole import c_to_f,这样就可以直接使用函数c_to_f,而不需要模块名作为前缀。



实验成功,将脚本导入python自带的环境变量目录中是有效的​,如果之前运行了python,再导入后并不用重启python就可以导入模块。

3.接下来​我们回归正题,如何自定义python环境变量目录。最直接的想法是把目录加到刚才的python环境变量中。可以使用sys.path.append('/.../....')。

​然后再次查看path路径,发现"/home/sh/python"目录确实加入了。并且也可以使用。但是这种方法一旦退出python,刚才新加的目录就消失了。

4.接下来介绍一种一劳永逸的方法,就是直接修改系统变量。

export PYTHONPATH=$PYTHONPATH:/..../..../​,对,没错,直接在shell中敲这一行,目录是你自定义的目录,然后打开python,import my_mole,你就愉快的可以使用自定义的模块了。

http://blog.sina.com.cn/s/blog_959cf80d0102vx3j.html

⑵ linux系统python24版本functools模块

把你的python版本升级到2.7
我使用2.7版本,没有这个问题,可以正常引用。
另外就是库的版本请参考
xlrd 0.9.3
xlwt 0.7.5
setuptools-3.0b1
xlutils 1.7.1

⑶ 在Linux上怎么安装python的模块呢

一、 单文件模块
直接把文件拷贝到 $python_dir/Lib
二、 多文件模块,带setup.py
python setup.py install
三、 egg文件
1) 下载ez_setup.py,运行python ez_setup
2) easy_install *.egg
注:虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。

⑷ 怎样在Linux环境下改变python的模块路径

  1. sys.path.append方法

  2. /usr/local/lib/python2.7/dist-packages(或/usr/lib/python2.7/site-packages)添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的文件名称就是了,如/home/xxx/python_pkgs,保存退出,OK!结果自己验证,重启terminal,再次打开python

⑸ linux环境的 python 可以直接全部包到其它linux机器使用么

一般都可以,不过至少要满足以下条件:

  1. python解释器的版本要一致

  2. 如果调用了python的扩展模块,则在其他机器上也要安装好同样的扩展模块。

  3. 如果调用了其他第三方服务等,则在其他机器上也要能够访问。

⑹ 如何编译C++文件为Python扩展模块

大概有三种常用方法:
1>使用ctypes模块来调用C写的共享库,比如:
[python] view plain print?
#测试ctypes调用linux动态库的能力
from ctypes import *
lib = CDLL("libc.so.6")
printf = lib.printf
printf("Hello World\n")

#查找动态库
from ctypes.util import find_library
print find_library('c')
output = CDLL(find_library("c")).printf
output("测试成功!\n")
但是用它来调用C++写的so就不太合适,因为编译时c++函数名修饰会给你的函数取一个特殊的字符串,你不能在你的python代码里直接使用此函数名,除非你使用的是修饰后的函数名。(在linux下你可以用nm来查看so中的函数名)

2>用C来写python的扩展模块,这个没怎么用过,以后使用时再记录在此。
3>用C++来写python扩展模块:
我是使用Boost.Python来写扩展的,先上工作中的代码片段:

[python] view plain print?
#include <boost/python.hpp> //包含boost.python头文件
#include <cstdio>
#include <string>

using namespace boost::python;//引入命令空间

class lshw //定义一个类
{
public:
lshw();
virtual ~lshw();

void scan_device();
string get_xml();

private:
hwNode *computer;
};

lshw::lshw()
{
computer = new hwNode("computer", hw::system);
}

lshw::~lshw()
{
if (computer)
delete computer;
}

void lshw::scan_device()
{
enable("output:numeric");
disable("output:sanitize");
scan_system(*computer);
}

string lshw::get_xml()
{
return computer->asXML();
}

void hello()
{
std::cout << "Hello World!" <<std::endl;
}

BOOST_PYTHON_MODULE(lshw)
{
class_<lshw, boost::nonable > ("lshw", "This is a lshw project python extend", init<>())//导出类中的方法
.def("scan_device", &lshw::scan_device)
.def("get_xml", &lshw::get_xml)
;
def("hello",&hello);//导出方法
}
使用boost.python其实结构很简单,你只要写很少的boost.python的代码,你可以把大部分的精力放在C++功能代码上,花很少的精力就可以把它扩展成python的模块。下面是我在Ubuntu11.10上的编译过程:

首先安装boost.python:
sudo apt-get install libboost-python1.46.1
再来编译生成so共享库文件:
g++ -shared -fPIC lshw.cc -o lshw.so -lboost_python
使用:
[python] view plain print?
import lshw
hw = lshw.lshw()
lshw.hello()
hw.scan_device()
xml = self.hw.get_xml()

⑺ linux python 怎么从网上安装模块

如楼上,补充一个,还有直接安装,就是python install setup.py,setup.py为模块安装包解压后里边的安装文件

⑻ linux 安装python拓展包pexpect

哦。因为你是egg格式。所以需要安装一个setup tool,也有可能是ezsetup。这个在它的安装里有一个详细提示。

distuils.core是python的setup.py里引用的一个安装包。通常python安装分发包都要使用这个库。

从现在这个情况看。你的机器上的python似乎不是一个完整版本。

我以前在suse的linux上发现过这种问题。

你可以单独安装一个自己的python版本。这样linux原有的python与你安装的python相互不影响都可以使用。

阅读全文

与linuxpython扩展模块相关的资料

热点内容
好兴动app还款怎么登录不上去了 浏览:663
郑州云服务器托管 浏览:720
服务器地址跟踪 浏览:978
免费google云服务器 浏览:516
摘译和编译的英文 浏览:359
热泵压缩机选型 浏览:121
op手机微信加密如何解除 浏览:386
如何在王牌战争找到高爆率服务器 浏览:13
江浙小学语文辅导课用什么APP 浏览:99
新梦幻大陆服务器地址 浏览:241
网吧服务器怎么更换壁纸 浏览:530
linux命令方法 浏览:332
linux下载freetype 浏览:123
程序员入驻平台 浏览:327
程序员大战外挂 浏览:745
html实例教程pdf 浏览:157
linux命令开放所有权限 浏览:575
30岁能学会编程 浏览:737
小火箭的服务器是什么 浏览:967
cad查信息命令 浏览:402