2012-02-15 55 views
3

如果我把我的項目放在/ usr/bin/超出主文件夾.pyc文件?

我的python解釋器會生成字節碼嗎?如果是這樣,它將它們放在哪裏,因爲文件在該文件夾中沒有寫入權限。它將它們緩存在臨時文件中嗎?

如果不是,那麼我在該項目中出現性能損失?

我已經打包這件事作爲從我的Ubuntu PPA安裝一個.deb文件,因此要安裝這個項目的明顯的地方是在/ usr/bin中/

,但如果我不生成字節碼把它放在那裏我該怎麼辦?如果安裝在其他人機器上,我可以給項目寫權限嗎?這似乎是一個安全風險。

Ubuntu中肯定會安裝很多python項目(顯然還有其他發行版),他們如何處理這個問題?

感謝

回答

1

關於/usr/bin腳本,如果你執行你的腳本不具有權限的/usr/bin寫,那麼.pyc文件不會被創建,而且據我所知用戶,沒有任何其他的緩存機制。

這意味着您的文件每次都會由解釋器進行字節編譯,所以會出現性能損失。但是,可能這種損失並不明顯。請注意,更新源文件時,編譯文件會自動更新,而用戶不會注意到它(至少大部分時間)。

我看到的是,Ubuntu中的常見做法是使用/usr/bin中的小腳本,甚至沒有.py擴展名。這些腳本的字節編譯速度非常快,所以您不必擔心這一點。他們只是進口一個圖書館,並打電話給某種library.main.Application().run()方法,就這些了。

請注意,該庫安裝在不同的路徑中,並且所有庫文件都是針對不同的python版本進行字節編譯的。如果您的包裝中不是這種情況,那麼您必須檢查您的文件setup.py和您的debian文件,因爲這不是它應該的方式。

+0

非常感謝。所以我認爲答案應該是在我的機器上編譯並在.deb文件中分發.pyc文件。 – Caustic 2012-02-16 07:43:02

+0

@Caustic不,你分發你的源文件和打包腳本,在爲每個可用的python安裝安裝時,都要編譯它們。請看[包裝指南](https://wiki.ubuntu.com/PackagingGuide/Python)。 – jcollado 2012-02-16 08:13:47

+0

* facepalm *當然是。感謝堆!這是最有意義的。 – Caustic 2012-02-16 08:47:10

1

不會爲直接運行的腳本生成.pyc/.pyo文件。 Python模塊放置在通常需要Python模塊並打包的位置,可以在構建時或安裝時生成.pyc/.pyo文件,因此不是最終用戶的問題。