2017-01-30 139 views
0

我想使用Python 2.7使用gmpy2但是當我嘗試導入它,我得到:pip install -user gmpy2和安裝:gmpy2安裝,但無法找到libmpc.so.3

>>> import gmpy2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: libmpc.so.3: cannot open shared object file: No such file or directory 

我使用PIP安裝gmpy2看起來不錯,除了說

Could not find .egg-info directory in install record for gmpy2 

但之後它說,安裝是成功的。

我已經安裝了MPC(1.0.3),GMP(6.1.1)和MPFR(3.1.4),它們都可以工作,我的意思是我可以撥打gcc foo.c -lmpcgcc bar.c -lmpfr,代碼編譯和按預期工作。我也得到了gmpy使用pip install的工作。我認爲這個問題將與他們沒有安裝在默認目錄中,因爲我沒有sudo權限。

其中libmpc.so.3所在的目錄是在海灣合作委員會調用PIP吐出來,我還設置CPATHCPPFLAGS看在my_prefix/includeLDFLAGSmy_prefix/lib

我真的不想使用MPC的功能,所以如果有一個簡單的選項不安裝那部分gmpy2我會很高興。

我真的很困惑,我曾經認爲pip無法建立一個庫,我已經離開並安裝了依賴項,但通常一旦庫被傳遞了它的pip就可以工作。

回答

1

我保持gmpy2並有幾個是可以傳遞給setup.py的,可以幫助命令行選項。我現在無法測試pip語法,但這裏有一些選項:

--shared=/path/to/gmp,mpfr,mpc將配置gmpy2從指定目錄加載庫。

--static--static=/path/to/gmp,mpfr,mpc將創建一個靜態鏈接版本的gmpy2,如果可以找到正確的庫。

您也可以直接嘗試使用setup.py進行構建。它可能會產生更好的錯誤消息。再次,未經測試的命令:

python setup.py build_ext --static=/path/to/gmp,mpfr,mpc應編譯一個獨立的,靜態鏈接的gmpy2.so,這將需要移動到適當的位置。

更新

我已經能夠測試選項點子。

如果您嘗試使用非Linux發行版提供的GMP,MPFR和MPC版本,則需要將新文件的位置指定爲由pip調用的基礎setup.py。例如,我已經更新了本地安裝在/home/case/local中的版本。下面的命令將配置gmpy2使用這些版本:

pip install --install-option="--shared=/home/case/local" --user gmpy2 

要編譯靜態鏈接的版本(例如,簡化分佈到集羣等系統),你應該使用下列內容:

pip install --install-option="--static=/home/case/local" --user gmpy2 

setup.py將使用指定的基本目錄來配置正確的INCLUDE路徑(/ home/case/local/include)和運行時庫路徑(/ home/case/local/lib)。

+0

謝謝!我用'pip install --install-option =「 - shared =/home/case/local」--user gmpy2'其中'/ home/case/local'是我在安裝GMP和MPC時使用的前綴,現在完美。 –

0

嘗試做以下,因爲它可能我在固定的舊版本:

  1. PIP安裝--upgrade setuptools的點子

  2. PIP卸載gmpy2

  3. PIP安裝gmpy2

+0

我在升級setuptools時遇到了問題,因爲我無法更新我運行'pip install --user --upgrade setuptools'的全局程序,但它不工作。感謝您的建議,如果我取得進展,我會通知您。 –