Ⅰ 如何通過VBA,獲得本文件所在的文件夾路徑。
Subs()
Dimpth$
pth=ThisWorkbook.Path
MsgBox"本文件的路徑為:"&pth
EndSub
Ⅱ python tensorflow 怎麼添加auc
tensorflow添加自定義的auc計算operator
tensorflow可以很方便的添加用戶自定義的operator(如果不添加也可以採用sklearn的auc計算函數或者自己寫一個 但是會在python執行,這里希望在graph中也就是c++端執行這個計算)
這里根據工作需要添加一個計算auc的operator,只給出最簡單實現,後續高級功能還是參考官方wiki
注意tensorflow現在和最初的官方wiki有變化,原wiki貌似是需要重新bazel編譯整個tensorflow,然後使用比如tf.user_op.auc這樣。
目前wiki給出的方式>=0.6.0版本,採用plug-in的方式,更加靈活可以直接用g++編譯一個so載入,解耦合,省去了編譯tensorflow過程,即插即用。
首先auc的operator計算的文件
tensorflow/core/user_ops/auc.cc
/* Copyright 2015 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
// An auc Op.
#include "tensorflow/core/framework/op.h"
#include "tensorflow/core/framework/op_kernel.h"
using namespace tensorflow;
using std::vector;
//@TODO add weight as optional input
REGISTER_OP("Auc")
.Input("predicts: T1")
.Input("labels: T2")
.Output("z: float")
.Attr("T1: {float, double}")
.Attr("T2: {float, double}")
//.Attr("T1: {float, double}")
//.Attr("T2: {int32, int64}")
.SetIsCommutative()
.Doc(R"doc(
Given preidicts and labels output it's auc
)doc");
class AucOp : public OpKernel {
public:
explicit AucOp(OpKernelConstruction* context) : OpKernel(context) {}
template<typename ValueVec>
void index_sort(const ValueVec& valueVec, vector<int>& indexVec)
{
indexVec.resize(valueVec.size());
for (size_t i = 0; i < indexVec.size(); i++)
{
indexVec[i] = i;
}
std::sort(indexVec.begin(), indexVec.end(),
[&valueVec](const int l, const int r) { return valueVec(l) > valueVec(r); });
}
void Compute(OpKernelContext* context) override {
// Grab the input tensor
const Tensor& predicts_tensor = context->input(0);
const Tensor& labels_tensor = context->input(1);
auto predicts = predicts_tensor.flat<float>(); //輸入能接受float double那麼這里如何都處理?
auto labels = labels_tensor.flat<float>();
vector<int> indexes;
index_sort(predicts, indexes);
typedef float Float;
Float oldFalsePos = 0;
Float oldTruePos = 0;
Float falsePos = 0;
Float truePos = 0;
Float oldOut = std::numeric_limits<Float>::infinity();
Float result = 0;
for (size_t i = 0; i < indexes.size(); i++)
{
int index = indexes[i];
Float label = labels(index);
Float prediction = predicts(index);
Float weight = 1.0;
//Pval3(label, output, weight);
if (prediction != oldOut) //存在相同值得情況是特殊處理的
{
result += 0.5 * (oldTruePos + truePos) * (falsePos - oldFalsePos);
oldOut = prediction;
oldFalsePos = falsePos;
oldTruePos = truePos;
}
if (label > 0)
truePos += weight;
else
falsePos += weight;
}
result += 0.5 * (oldTruePos + truePos) * (falsePos - oldFalsePos);
Float AUC = result / (truePos * falsePos);
// Create an output tensor
Tensor* output_tensor = NULL;
TensorShape output_shape;
OP_REQUIRES_OK(context, context->allocate_output(0, output_shape, &output_tensor));
output_tensor->scalar<float>()() = AUC;
}
};
REGISTER_KERNEL_BUILDER(Name("Auc").Device(DEVICE_CPU), AucOp);
編譯:
$cat gen-so.sh
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
i=$1
o=${i/.cc/.so}
g++ -std=c++11 -shared $i -o $o -I $TF_INC -l tensorflow_framework -L $TF_LIB -fPIC -Wl,-rpath $TF_LIB
$sh gen-so.sh auc.cc
會生成auc.so
使用的時候
auc_mole = tf.load_op_library('auc.so')
#auc = tf.user_ops.auc #0.6.0之前的tensorflow 自定義op方式
auc = auc_mole.auc
evaluate_op = auc(py_x, Y) #py_x is predicts, Y is labels
Ⅲ 如何支持自定義安裝的高版本openssl庫
1. Python官網下載源碼包(version 2.7.8)並解壓
2. 通過configure配置Makefile參數
假定先前已在/home/slvher/tools/openssl-1.0.1j路徑下成功安裝好高版本openssl,那麼,可以通過下面的環境變數來設置gcc的編譯/鏈接參數:
export LDFLAGS="-lssl -lcrypto -Wl,-rpath=/home/slvher/tools/openssl-1.0.1j/lib/" export CPPFLAGS="-I/home/slvher/tools/openssl-1.0.1j/include"
然後運行configure工具:
./configure --prefix=/home/slvher/tools/Python-2.7.8
configure運行完後,會生成Makefile,check無誤後,執行make && make install就能完成Python安裝。
3. 驗證Python支持的ssl版本
Python安裝成功且其bin路徑加入PATH環境變數後,可通過下面的命令來驗證是否正確支持高版本的openssl庫:
python -c "import ssl; print ssl.OPENSSL_VERSION"
例如我機器上的輸出結果如下:
OpenSSL 1.0.1j 15 Oct 2014
Ⅳ 如何在CentOS6上安裝Python2.7和Python3.3-Python
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下
面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make
install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make
install過程中報許可權不足問題,因為sudo不作用於&&後面的make install。
安裝前准備
編
譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利
用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python
編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配
置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python
2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目
前大部分的linux系統自帶的Python都是以共享庫的方式編譯的,
此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。
為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
# Python 2.7.6:
wgethttp://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tarxfPython-2.7.6.tar.xz
cdPython-2.7.6
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wgethttp://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tarxfPython-3.3.5.tar.xz
cdPython-3.3.5
./configure--prefix=/usr/local--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7或 /usr/local/bin/python3.3中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools早已取代 Distribute成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
# First get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在/usr/local/lib/pythonX.Y/site-packages/中可以找到(X.Y是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝virtualenv並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不
同的 Python 運行環境(也叫沙盒) 可以有自己的 Python
版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。
這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check the system Python interpreter version:
python--version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python--version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python--version
# This will show Python 3.3.5
deactivate
Ⅳ 如何在CentOS6上安裝Python2.7和Python3.3-Python
安裝前准備
編譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才
能依賴這些工具和拓展庫展示它強悍的功能。下面是利用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移
動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python
編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配
置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python
2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目
前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的,
此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。
為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
# Python 2.7.6:
wgethttp://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tarxfPython-2.7.6.tar.xz
cdPython-2.7.6
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wgethttp://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tarxfPython-3.3.5.tar.xz
cdPython-3.3.5
./configure--prefix=/usr/local--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7或 /usr/local/bin/python3.3中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools早已取代 Distribute成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
# First get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在/usr/local/lib/pythonX.Y/site-packages/中可以找到(X.Y是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝virtualenv並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不
同的 Python 運行環境(也叫沙盒) 可以有自己的 Python
版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。
這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check the system Python interpreter version:
python--version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python--version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python--version
# This will show Python 3.3.5
deactivate
當
你使用 virtualenv創建一個運行沙盒時,它會自動在沙盒環境中為您安裝setuptools和 pip
(聽起來不錯,可以還沒嘗試過)。但如果您使用 pyvenv
的話,您就必須自己動手安裝了。也簡單,激活沙盒之後通過運行下載的z_setup.py文件去安裝即可。
Ⅵ 如何在 CentOS 6 中安裝 Python3.3.5
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下
面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make
install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make
install過程中報許可權不足問題,因為sudo不作用於&&後面的make install。
安裝前准備
編
譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利
用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python
編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配
置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python
2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目
前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的,
此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。
為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
# Python 2.7.6:
wgethttp://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tarxfPython-2.7.6.tar.xz
cdPython-2.7.6
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wgethttp://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tarxfPython-3.3.5.tar.xz
cdPython-3.3.5
./configure--prefix=/usr/local--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7或 /usr/local/bin/python3.3中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools早已取代 Distribute成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
# First get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在/usr/local/lib/pythonX.Y/site-packages/中可以找到(X.Y是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝virtualenv並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不
同的 Python 運行環境(也叫沙盒) 可以有自己的 Python
版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。
這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check the system Python interpreter version:
python--version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python--version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python--version
# This will show Python 3.3.5
deactivate
Ⅶ 在linux上交叉編譯wxPython的時候遇到的一個找不到鏈接庫的問題,求解答
你這個文件到底在什麼地方?
/usr/local/arm/gtkdfp/lib
下面怎麼還有帶目錄名的 /usr/lib/
把程序裝載稀奇古怪的地方,出現任何問題都是可能的。
Ⅷ 如何在CentOS6上安裝Python2.7和Python3.3
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下
面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make
install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make
install過程中報許可權不足問題,因為sudo不作用於&&後面的make install。
安裝前准備
編
譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利
用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python
編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配
置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python
2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目
前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的,
此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。
為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
Ⅸ 如何在CentOS6上安裝Python2.7和Python3.3
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make install過程中報許可權不足問題,因為sudo不作用於&&後面的make install。
安裝前准備
編譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python 2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的, 此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
# Python 2.7.6:
wgethttp://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tarxfPython-2.7.6.tar.xz
cdPython-2.7.6
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wgethttp://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tarxfPython-3.3.5.tar.xz
cdPython-3.3.5
./configure--prefix=/usr/local--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7或 /usr/local/bin/python3.3中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools早已取代 Distribute成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
# First get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在/usr/local/lib/pythonX.Y/site-packages/中可以找到(X.Y是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝virtualenv並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不同的 Python 運行環境(也叫沙盒) 可以有自己的 Python 版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。 這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check the system Python interpreter version:
python--version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python--version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python--version
# This will show Python 3.3.5
deactivateCentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make install過程中報許可權不足問題,因為sudo不作用於&&後面的make install。
安裝前准備
編譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python 2.7中您可以通過在configure時添加選項--enable-unicode=ucs4 進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態共享庫)
目前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的, 此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時,make altinstall命令是必須的!如果您使用一般的 make install命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改/etc/ld.so.conf文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
# Python 2.7.6:
wgethttp://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tarxfPython-2.7.6.tar.xz
cdPython-2.7.6
./configure--prefix=/usr/local--enable-unicode=ucs4--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wgethttp://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tarxfPython-3.3.5.tar.xz
cdPython-3.3.5
./configure--prefix=/usr/local--enable-sharedLDFLAGS="-Wl,-rpath /usr/local/lib"
make&&makealtinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7或 /usr/local/bin/python3.3中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools早已取代 Distribute成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
# First get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在/usr/local/lib/pythonX.Y/site-packages/中可以找到(X.Y是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝virtualenv並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不同的 Python 運行環境(也叫沙盒) 可以有自己的 Python 版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。 這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check the system Python interpreter version:
python--version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python--version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python--version
# This will show Python 3.3.5
deactivate