CentOSシステムPython2.7環境に基づくビルドとプログラム開発

序文

以下の内容は、作者がcentos6.9システムで測定し、実際のプロジェクト要件に従って開発および完成されたもので、最終的にプログラムの正常な動作を保証します。

 

Pythonバージョンのアップグレード

Linuxシステムで運用する場合は、以前のウィンドウ配下のファイルをインポートする必要があり、直接取得できない場合は、共有フォルダから実現できます。

共有フォルダーを作成する

  • [仮想マシン]-> [設定]-> [オプション]-> [共有フォルダ]に移動し、[常に有効]を選択して、ホストパスを追加し、共有フォルダを設定します。

  • システムにログインした後、コンピューター-> mnt-> hgfsフォルダーを開くと、以前に追加された共有フォルダーが表示されます。

  • ホストと仮想マシンの間でファイルを転送する必要がある場合は、それらを共有フォルダーに配置するだけです。

zlibをインストールする

CentOSシステムにはzlibが含まれておらず、Pythonモジュールをインストールするときにzlibが必要です。zlibを最初にインストールしてからコンパイルしてコンパイルする必要があります(Pythonがすでにインストールされている場合は、Pythonを再コンパイルする必要があります)。zlibは正常に動作します。次のコマンドを入力します(ダウンロードしてインストール):

yum install zlib
yum install zlib-devel

アップグレードプロセス

LinuxシステムにインストールされているWebサイトから最新のPython2バージョンGzipped source tarballダウンロードします。ダウンロード後、ホストは共有フォルダーを介して仮想マシンに渡されます。仮想マシンで仮想マシンを開きTerminal、次の手順に従います。

python --version
out:python 2.6.6 #确定当前系统版本
​
tar –zxvf Python-2.7.14.tgz # 将下载的最新版本解压
cd Python-2.7.14
mkdir /usr/local/lib/python2.7
./configure --prefix=/usr/local/lib/python2.7 #解压后的目录下编译安装
make
make install
​
# 建立软连接,使系统默认的python指向python2.7
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/lib/python2.7 /usr/bin/python
​
python --version #查看python版本是否已经正常更新

yumを変更する

yumは元のpython2.6の一部のスクリプトを使用するため、yumを使用するには元のpython2.6インタープリターにリダイレクトする必要があります。


which yum #找到yum位置
out:/usr/bin/yum
vim /usr/bin/yum #进入编辑模式,将python修改为python2.6,完成编辑后按Esc退出编辑模式,并输入#:wq保存并退出。

必要なモジュールをインストールする

setuptools

解凍後にフォルダを入力し、次のコマンドを入力します:


python setup.py build
python setup.py install

Tkinter

  • Tkinterモジュールをインストールします。インストール後、システム自体のpythonを使用できます。これは、Tkinterが正常にインストールされたことを示しますが、アップグレードされたpython2.7は使用できず、構成を続行する必要があります。

    
    yum -y install tkinter
    ​
    python
    ​
    import Tkinter
  • Pythonインストールフォルダーを入力し、Setup.distファイルを編集し、次の5行を見つけて、前の#を削除します。

    
    _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
    -L/usr/local/lib \
    -I/usr/local/include \
    -ltk8.5 -ltcl8.5 \
    -lXll
  • ltkとltclのデフォルトは8.2であり、システムの実際のtcl / tkバージョンに応じて変更する必要があります。実際のバージョンは次のコマンドで確認できます。


rpm -qa | grep ^tk
out:tk -8.5.7-5.el6.x86_64
out:tkinter-2.6.6-36.el6.x86_64
​
rpm -qa | grep ^tcl
out:tk -8.5.7-6.el6.x86_64
​
yum -y install tcl-devel tk-devel #安装tck-devel和tk-devel
#配置安装
ldconfig
./configure
make
make install

ピップ

Webページを開いて最新バージョンダウンロードしpip-10.0.1.tar.gz、次のコードを実行します。


tar zxvf pip-10.0.1.tar.gz
cd pip-10.0.1
python setup.py install
​
# pip install xxx,执行该命令时,出现错误:
# pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
rpm -aq|grep openssl # 查看openssl安装包,发现缺少openssl-devel包
yum install openssl-devel -y #yum安装openssl-devel
rpm -aq|grep openssl #查看安装结果
vi Python-2.7.14/Modules/Setup #修改Setup文件,即修改安装文件,可以直接路径下打开修改
# 修改为如下结果(其中起始没有#的行,是因为以删除)
# Socket module helper for socket(2)
_socket socketmodule.c timemodule.c
​
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto
    
#修改完保存,重新编译python,测试可正常使用
make
make install
​

pyinstaller


pip install pyinstaller #安装
​
pyinstaller -F -c xxx.py #出现如下所示错误
#OSError: Python library not found: libpython3.4mu.so.1.0, libpython3.4m.so.1.0, libpython3.4.so.1.0
#由于在系统的lib路径中找不到这个共享库。
#重新编译python,测试可正常使用(如果编译时加上了--enable-shared,才会编译这个共享库,默认的位置是python可执行程序所在目录的lib目录下,如/usr/local/python27)
./configure --enable-shared --prefix=/usr/local/lib/python2.7 #后面路径由于之前已经配置过,可以不加make
make install
#安装后将/usr/local/python/lib目录下的libpython2.7.so和libpython2.7.so.1.0复制到/usr/lib64中。
python --version #查看python是否正常。
pyinstaller -F -c xxx.py #打包成功得到xxx可执行文件

さまざまなパッケージ化方法は、さまざまなパラメーターを定式化することによって実現できます。

  • -F , -onefile:このオプションを指定すると、合計exeファイルが生成され、すべてのファイルがこのファイルに追加されます。

  • -D, -onedir:配布用のexeファイルを保持するディレクトリを生成する方が便利です。

  • -K, -tk:デプロイ時に、グラフィカルインターフェイスを備えたpythonファイルに適したTCL / TKを含めます。

  • -a, -ascii:UnicodeをサポートするPythonバージョンにはすべてのエンコーディングがデフォルトで含まれているため、エンコーディングは含まれていません。このオプションは基本的にあまり役に立ちません。

  • -d, -debug:デバッグバージョンの実行可能ファイルを生成します。

  • -s, -strip:これは他の人々の言葉を参照しており、「実行可能ファイルと共有ライブラリはストリップを介して実行されます。Cygwinのストリップは通常のwin32DLLを使用できなくなることに注意してください。」

  • -X, -upx:圧縮方式。UPXがインストールされている場合、ソースファイルは圧縮されて実行されます。

  • -o DIR, -out=DIR:exe生成ディレクトリとしてDIRを指定します。指定しない場合、デフォルトはpyinstallerの解凍ディレクトリであり、生成されたexeファイルを保存するためにpythonファイルに基づいて同じ名前のディレクトリが作成されます。

  • -p, DIR, -path=DIR:Windowsで英語のセミコロンで区切られた、インポートされた環境変数のパスを設定するか、複数の-pオプションを使用してインポートの複数のパスを設定できます。

  • -icon=<FILE.ICO>:exeファイルのアイコンとしてfile.icoを追加します。

  • -icon = <FILE.EXE, N>:原理は上記と同じです。

その他の

Xlrd、paho.mqtt、6などのモジュール、インストールパッケージtar.gzをダウンロードし、tar -zxvfコマンドでインストールパッケージを解凍してから、フォルダーに移動し、python setup.py installと入力してインストールします。

一般的なコマンド

ヤム

yum(Yellow dogUpdater、Modified)は、シェルフロントエンドパッケージマネージャーで、指定したサーバーからRPMパッケージを自動的にダウンロードしてインストールし、依存関係を自動的に処理し、面倒なダウンロードなしですべての依存パッケージを一度にインストールできます。インストール。特定のパッケージ、グループ、またはすべてのパッケージを検索、インストール、削除するコマンドを提供します。

yum構文:yum [オプション] [コマンド] [パッケージ…]

オプション:オプション、オプションには-h(ヘルプ)、-y(インストールプロセスですべて[はい]を選択するように要求された場合)、-q(インストールプロセスを表示しない)などがあります。

コマンド:実行する操作、更新(更新)、インストール(インストール)、削除(削除)など。

パッケージ:操作するオブジェクト。

その他の


cd ~/Desktop #返回桌面目录
cd .. #返回上一级目录
tar –zxvf xxx.tar.gz #解压
mkdir /xxx/xxx #创建文件夹
which python #查看路径
./xxx # ./表示当前路径,xxx表示linux下可执行文件名
tar zxvf xxx.tar.gz #解压tar.gzwen
tar xvJf xxx.tar.xz

c / c ++ダイナミックリンクライブラリ

生成された.dllファイルはWindowsで呼び出され、生成された.soファイルはLinuxで呼び出されます。Cコードをコンパイルすると、Pythonで実行可能な.soファイルが最終的に生成されます。具体的な手順は次のとおりです(makefileに書き込んで、makeコマンドでコンパイルすることもできます)。

  • gcc -c test.c、test.oファイルを生成します(不要)

  • gcc -fPIC -shared test.c -o test.so、test.soファイルが生成されます

このうち、-shared:は、ダイナミックリンクライブラリを生成するように指定されており、このフラグがないと外部プログラムに接続できないことを示します。これは、実行可能ファイルを生成することと同じです。

-fPIC:位置に依存しないコードへのコンパイルこのオプションを使用しない場合、コンパイルされたコードの位置は関連しているため、動的ロード中にさまざまなプロセスのニーズを満たすためにコードがコピーされます。 。

C ++コードの場合、g ++でコンパイルする必要があり、関数の前に宣言するためにextern "C"を追加する必要があります。

手続き上の問題解決

MainBegin.pyをパッケージ化して実行可能ファイルMainBeginを生成した後、操作中に次のエラーが発生します。

ImportError:pkgutilという名前のモジュールはありません

site-packages / protobuf-2.5.1-py2.7.egg / googleおよびsite-packages / protobuf-2.5.1-py2.7.egg / google / protobufのパスの下にある__init__.pyの内容をコメント化します。

 

その他の関連ソフトウェア

LibreOffice

Webページを参照してください


yum install libreoffice
yum install libreoffice-headless

 

 

公開された10元の記事 ウォンの賞賛0 ビュー6267

おすすめ

転載: blog.csdn.net/u010379248/article/details/80114660