Office365-rest-python-client: Python3では使用できません

作成日 2017年07月04日  ·  24コメント  ·  ソース: vgrem/Office365-REST-Python-Client

Python 3に問題はありますか?

bug enhancement

最も参考になるコメント

@ vic-by最近のコミットで問題が修正されました: https
現時点では、このコミットはまだpypiにプッシュされていないことに注意してください。 したがって、 pip install Office365-REST-Python-Client実行すると、そのコードは取得されません。 gitからインストールすると: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

全てのコメント24件

こんにちは、

Pythonの両方のバージョン(2と3)と互換性があるはずですが、確認させてください。 折り返しご連絡いたします。

こんにちは迅速な返信をありがとう。
以下は私が得ているエラーです
`------------------------------------------------- --------------------------
ModuleNotFoundErrorトレースバック(最後の最後の呼び出し)
()
1インポートjson
2
----> 3 from office365.runtime.auth.authentication_context import AuthenticationContext
4 from office365.runtime.client_request import ClientRequest
5 from office365.runtime.utilities.request_options import RequestOptions

ModuleNotFoundError: 'office365'`という名前のモジュールがありません

そして、はい、私はpipにmoduelをインストールさせます:)

こんにちは、Requestsモジュールのみを使用して情報を取得するコードを作成しました。 FedAuthとrtFaのCookieを正常に取得できます。 ただし、siteUsersを取得しようとすると、Forbiddenというエラーがスローされます。
これを手伝ってもらえますか?
`インポートリクエスト

url = " https://login.microsoftonline.com/extSTS.srf "
ヘッダー= {'content-type': 'application / json'}
TopLevelUrl = ' https://XXXX.sharepoint.com '
path = 'C:\ PSR \ PythonFiles \ SharePointOnlineXML.txt'

filecontent = open(path、 'r')
SharepointOnlineAuth = filecontent.read()
SharepointOnlineAuth = SharepointOnlineAuth.format('[email protected] '、' Password '、TopLevelUrl)

クッキーを取得するためにトークンを取得するために電話をかけましょう

response = requests.post(url、data = SharepointOnlineAuth、headers = headers)
s = str(response.content)
Start = [pos for pos in range(len(s))if s [pos:]。startswith( '')] [0]
Finish = [pos for pos in range(len(s))if s [pos:]。startswith( '
')] [0]
LoginResponse = s [Start + 40:Finish]

それでは、CookieをフェッチしてSharePointOnlineを呼び出しましょう

url = TopLevelUrl + '/ _ forms / default.aspx?wa = wsignin1.0'
ヘッダー= {'content-type': 'application / x-www-form-urlencoded'}
response = requests.post(url、data = LoginResponse、headers = headers)

上記の呼び出しから取得したCookieを使用してSharepointRESTApiを呼び出す

url = TopLevelUrl + '/ _api / web / siteusers'
print(url)
_Fedauth = 'FedAuth = {}'。format(response.cookies ['FedAuth'])
_rtFa = 'rtFa = {}'。format(response.cookies ['rtFa'])
_FinalDict = {'Cookie':_ Fedauth + '、' + _rtFa}

ヘッダー= {'Content-Type': 'application / x-www-form-urlencoded'、
'User-Agent': 'Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 59.0.3071.115 Safari / 537.36'}
headers.update(_FinalDict)

印刷(ヘッダー)

response = requests.get(url、headers = headers)
印刷(応答) `

python3.4でエラーが発生する:

_Traceback(最後の最後の呼び出し):
ファイル "auth_sharepoint_online365.py"、2行目、
office365.runtime.auth.authentication_contextからimportAuthenticationContext
ファイル "authentication_context.py"、2行目、
office365.runtime.auth.saml_token_providerからインポートSamlTokenProvider
ファイル "saml_token_provider.py"、2行目、
urlparseをインポートする
ImportError: ' urlparse 'という名前のモジュールはありません_

https://docs.python.org/2/library/urlparse.htmlによると:

Python 3では、urlparseモジュールの名前がurllib.parseに変更されました。

これを試してみてくださいhttps://github.com/parthrawal/Python.O365SharePoint Onlineに接続できる.pyファイルを作成しました。また、辞書形式のリストからデータを取得する方法もいくつかあります。 ご不明な点がございましたら、お気軽にお問い合わせください。

@ vic-by最近のコミットで問題が修正されました: https
現時点では、このコミットはまだpypiにプッシュされていないことに注意してください。 したがって、 pip install Office365-REST-Python-Client実行すると、そのコードは取得されません。 gitからインストールすると: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

python3でライブラリを実際に取得するために必要な作業はまだあります。

Python 3でライブラリを実行しているときにエンコードの問題が発生しました。これは、list.propertiesを実行しているときに発生しましたが、問題は永続的であると確信しています。

    ctx = ClientContext(url, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    lists = web.lists
    ctx.load(lists)
    ctx.execute_query()
    lists[0].properties
 in <module>()
---> 16         lists[0].properties

c:\python\python35\lib\encodings\cp850.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_map)[0]
     20
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position 11052: character maps to <undefined>

Python 3でも同じ問題が発生しています:「ModuleNotFoundError:「urlparse」という名前のモジュールがありません」
ファイルSharePointOnline.pyのテスト:認証の失敗->入力および保存されたパスワードが一致しません。

このリンクhttps://github.com/parthrawal/Python.O365を試しましたか?同じサービスアカウントを使用していることを確認してください

はい。 下部にあるコードをコピーして貼り付けます。

if __name__ == "__main__":
    UserName = "[email protected]"
    # UserName = "[email protected]"
    Password = "my_password"
    TopLevelUrl = "https://company.sharepoint.com/"
    SPOnlineHeaders(UserName, Password, TopLevelUrl)

次のエラーが返されます。

....
IndexError: list index out of range

エラーの詳細を取得するために、SPOnlineHeadersに次のコード(印刷)を挿入しました。

response = requests.post(url, data=SharepointOnlineAuth, headers=headers)
s = str(response.content)
print(s)

応答:
... wst:FailedAuthentication ...入力および保存されたパスワードが一致しません...

あなたが使っているのはサービスアカウントだといいのですが

それは正しいです。 サービスアカウントを使用しています。

パスワードは正しいですか? もう一度確認してください。 コードを実行しようとしたので、正常に動作しています。 しかし、間違ったパスワードを入力すると、「IndexError:リストインデックスが範囲外です」というエラーがスローされます。

はい。 パスワードは正しいです。 これは、手動ログインを行うときに起こっていることです。

リンクをブラウザに書き込みます//company.sharepoint.com/

Enterキーを押すと、ログインページにリダイレクトされます: https&response_mode = form_post&response_type = code%20id_token&resource = ...

ログインページの[OK]ボタンを押した後、2つの高速リンクが表示されました...
最初: https
... と ...
2番目: https://login.microsoftonline.com/login.srf?client-request-id = .. ..

そして最後に必要なページで停止します:
https://company.sharepoint.com/

このコードを実行すると、コードのどこかに403エラーがスローされていることがわかりました。

応答= requests.post(url、data = SharepointOnlineAuth、headers = headers)
s = str(response.content)
印刷
「b'403FORBIDDEN '」

エンドポイントを使用するのを忘れました

url = " https://login.microsoftonline.com/extSTS.srf "

urlpar

urlparse(Python 3.6.5 :: Anaconda、Inc。)でも同じ問題が発生しています。 これは、saml_token_provider.pyを変更することで解決されました: from urllib.parse import urlparse [...] url = urlparse(self.url)

それから私はそれをインストールしたウェブがありませんでした: pip install lpthw.web 。 ただし、次の問題が発生しているため、問題があるようです。
from web import Web File "C:\ProgramData\Anaconda3\lib\site-packages\web\__init__.py", line 14, in <module> import utils, db, net, wsgi, http, webapi, httpserver, debugerror ModuleNotFoundError: No module named 'utils'

utilsモジュールをanacondaにインストールします。

utilsモジュールをanacondaにインストールします。

ありがとう。 utilsをインストールした後、dbもインストールする必要がありました...パッケージにrequirements.txtをチェックしておくと便利かもしれません。

現在起こっていることは、printステートメントがpython3には適切ではないということです。
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

次のリンクを通過してください:
https://docs.python.org/3.0/whatsnew/3.0.html

@viogpここに進捗状況を投稿していただきありがとうございます。これらのねじれのいくつかを解決できれば

やあ。 このライブラリの使用に問題があります。
トークンの取得中にエラーが発生しました:AADSTS90023:無効なSTS要求。
認証Cookieの取得中にエラーが発生しました
'FedAuth =' + self.FedAuth + 'を返します。 rtFa = '+ self.rtFa
TypeError:str( "NoneType"ではない)のみをstrに連結できます
誰かが私を助けることができますか?

ライブラリはPython2とPython3の両方のランタイムと公式に互換性があるため、この問題を解決することを提案してください。

やあ、

実行中にpycharmでプロジェクト環境を使用すると、このエラー「ModuleNotFoundError: 'office365.sharepoint.client_context'という名前のモジュールがありません」が表示されます。 しかし、Pythonシステム環境を使用すれば問題なく動作します。 Python3.6または3.7を使用しても同じ動作です。

助けてください!
ありがとう。

このページは役に立ちましたか?
0 / 5 - 0 評価