2017-07-12 1 views
1

this tutorialを使用してPythonパッケージをビルドしようとしています。これは、フォルダ構造です:Pythonパッケージ化 - NameError

testpackage\ 
     testpackage\ 
       __init__.py 
     setup.py 
     bin\ 
      test.sh 

setup.py

from setuptools import setup 

setup(name='testpackage', 
    version='0.1', 
    description='Test package', 
    url='http://github.com/storborg/testpackage', 
    author='ABcd', 
    author_email='[email protected]', 
    license='Private', 
    packages=['testpackage'], 
    scripts=['bin/test.sh'], 
    zip_safe=False) 

__init__.py

from subprocess import call 
import shlex 
def joke(): 
    call(shlex.split('bash bin/test.sh testfun')) 
    return (u'This is a sample package') 

test.sh

#!/bin/bash 

testfun() 
{ 
    echo "QQQQQQQQQQQQ" 
} 

"[email protected]" 

ルートtestpackageフォルダからpip install .コマンドを実行して正常にインストールされました。その後、同じフォルダからpythonプロンプトにアクセスしてjoke()という関数を呼び出すと、実行され、テキストメッセージが出力されました。別のフォルダからpythonプロンプトにアクセスしてこの関数を呼び出すと、NameErrorが投げられます。

>>> import testpackage 
>>> testpackage.joke() 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/local/lib/python2.7/dist-packages/testpackage/__init__.py",  line 2, in joke 
call(shlex.split('bash test.sh testfun')) 
NameError: global name 'call' is not defined 

なぜこれが起こっていますか?すべての手がかりは?

答えて

1

最後に、解決策が見つかりました。

sudo pip uninstall testpackageを使用してtestpackageをアンインストールしました。私はパッケージを変更していますsudo pip install .

たび

は、その後、私は再びそれをインストールし、私はアンインストールして、再度パッケージをインストールします。以前は、アンインストールせずにパッケージを再インストールしようとしていました。私はそれが更新されると思ったが、そうではなかった。

テスト済みです。正常に動作しました。

関連する問題