2016-08-05 23 views
8

我正在使用Windows 10並安裝了Python。新的更新將bash帶到了windows,但是當我從bash內部調用python時,它指的是隨bash一起提供的Python安裝,而不是安裝在Windows上的Python。因此,例如,我不能使用我已經安裝在Windows上的模塊,並且必須在bash安裝中單獨安裝它們。指向安裝在窗口上的python的bash

我該如何(可以嗎?)將bash指向我的原始Windows Python安裝?我在/ usr/bin中看到,在他們的名字中有很多「python」的鏈接,但我不確定哪些要更改,並且如果將它們更改爲Windows目錄,甚至可能因爲不同的可執行文件格式而工作。

+2

從WSL運行Windows程序的能力是[待辦事項](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/ 13284702-讓美國推出 - 窗口 - 流程 - 從-的bash)。 – eryksun

+0

我現在看到了,謝謝指出! –

回答

0

您目前無法從Bash內運行Windows應用程序,但這是我們正在爲未來版本開發的功能。如果您熱衷於成爲第一個在完成此功能後接收並運行此功能的人,請務必註冊Windows 10 Insider Fast-Ring。

0

我沒有安裝Windows 10,但我使用Babun和我有同樣的問題。因爲我讀的別名在Windows 10外殼做工精良所以只需在您的.bashrc添加別名指向你的Python安裝目錄:

alias python /mnt/c/Python27/python 
0

你至少有四個選項:

  1. 指定完整的絕對路徑到您想要使用的python可執行文件。
  2. 在.bashrc文件中定義一個別名
  3. 修改.bashrc文件中的PATH變量以包含您希望使用的python版本的位置。
  4. 在已存在於PATH中的目錄中創建符號鏈接。
+3

目前,Linux子系統無法在Windows子系統中啓動PE可執行文件。顯然他們正在考慮這一點,它可能(應該)最終得到支持。我想它可以在exec系列調用系列調用中實現,或者它們可以添加一個特殊的「/ bin/cmd」程序來啓動Windows中的cmd.exe實例,就像bash.exe啓動/ bin/bash在Linux中。然後可以通過'cmd/c python ...'運行Windows Python。 – eryksun

+0

@eryksun我可能誤讀/誤解了原來的問題。我沒有意識到討論中的「bash」實際上是Windows的一部分,而不是像cygwin或mingw這樣的第三方工具。 –

+1

請參見[Windows上的Ubuntu上的Bash](https://msdn.microsoft.com/commandline/wsl/about)。這是Windows 10中的一個新子系統,它直接通過將Linux系統調用映射到NT系統調用來運行Linux ELF二進制文件。 – eryksun

4

從Windows 10內部人員版本#14951開始,您現在可以從Bash內部調用Windows可執行文件。

您可以通過顯式調用可執行文件的絕對路徑(例如c:\Windows\System32\notepad.exe),或通過將可執行文件的路徑添加到bash路徑(如果它尚未)以及僅調用notepad.exe來完成此操作。

注:請務必將.exe追加到可執行文件的名稱 - 這是Linux下如何知道,你是在調用外國的東西和路由調用請求到註冊的處理程序 - 在這種情況下WSL。

所以,你的情況,如果你在Windows上安裝了Python 2.7,在C:\,你可能會使用這樣的命令,從慶典中調用它:

$ /mnt/c/Python2.7/bin/python.exe

(或類似 - 檢查您是否正確指定了每個文件夾/文件名的情況等)

HTH。

+0

當我這樣做時,我得到錯誤「無法執行二進制文件:Exec格式錯誤」。只是要清楚,這將運行Python的Windows安裝而不是Python的WLS安裝,對嗎? – tallen11