3

コマンド ライン インターフェイス経由で使用されるスクリプトと一緒に Python プロジェクトをデプロイする必要があります。ユーザーを支援するために、 に配置される Bash 補完ファイルも含めます/etc/bash_completion.d。残念ながら、ソースディストリビューションのpip install project.tar.gzインストールは、通常のユーザーとしてインストールすると失敗します。

error: could not delete '/etc/bash_completion.d/completion': Permission denied

pip install -e .書き込みの問題が無視されるため、プロジェクトのインストールは機能します。

では、root として実行されていないときにデータ ファイルを書き込もうとしないように、distribute に指示する方法はありますか?

4

1 に答える 1

1

あなたがスーパーユーザーでない場合に書き込みできないことを見つけるのに十分なほどインテリジェントな非ルートオプションがあります(しかし、私はそれを疑っています)。distribute/etc

distributeどのように書き込むかは言いませんが、これをand 節/etcに入れることができるかもしれません(もちろん、これが自動化されている場合は、その部分を取り出して手動で行う必要があるかもしれません)。try:except:setup.py

スクリプトを実行する前に書き込みできるかどうかわからない場合/etc(ユーザーの場合)、単に行うことができます。

 try:
      with open('/etc/bash_completion.d/completion', 'w') eo:
          eo.write('test')
      data_files = ['completion', '/etc/bash_completion.d/completion']
 except error:
      print 'User does not have write access to /etc completion will not work'
      data_files = []

 setup(
      ...
      data_files=data_files,
      etc...
 )
于 2013-03-22T09:57:03.133 に答える