質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

sys.path.append()の引数について

grilled_python
grilled_python

総合スコア237

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

3回答

0評価

0クリップ

4676閲覧

投稿2018/08/05 21:23

編集2018/08/06 04:46

windows10
django 2.0.5

同じプロジェクト内でdjangoとscrapyを使用しています。
djangoのmodelなどにscrapyから接続するのにscrapyのsettings.pyに下記のコード書いています。

scrapy_app.settigs.py

python

import os import sys import django sys.path.append('/Users/Jun/PycharmProjects/goscrapy') os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings' django.setup()

このままだと動くのですが、abspathを使って書こうとするとうまくいきません。

sys.path.append(os.path.dirname(os.path.abspath(''))) #os.path.dirname(os.path.abspath('')) #shellで確認 #'C:\Users\Jun\PycharmProjects' #configが見つからない sys.path.append(os.path.dirname(os.path.abspath('.'))) #os.path.dirname(os.path.abspath('')) #shellで確認 #'C:\Users\Jun\PycharmProjects' #configが見つからない sys.path.append(os.path.dirname(os.path.abspath('settings.py'))) #os.path.dirname(os.path.abspath('')) #shellで確認 #'C:\Users\Jun\PycharmProjects\goscrapy' #configが見つからない

一番下で合っていると思ったのですが、うまく動いてくれません。
sys.path.append('/Users/Jun/PycharmProjects/goscrapy')
こちらにもどすと動いてくれます。
なにか勘違いしているのでしょうか?
よろしくお願いいたします。

###追記 なにをしたいのか
scrapyをdjangoから操作したいので

How to use Scrapy with Django Application
こちらを参考にしているのですが、scrapyをデーモン化するscrapydにscrapyをデプロイする際に
sys.path.append('/Users/Jun/PycharmProjects/goscrapy')
だと上手くいきます。スクレイピングもできます。
それ以外だと上手くできません。

参考サイトの表記方法
scrapy_app/settings.py

import os import sys # DJANGO INTEGRATION sys.path.append(os.path.dirname(os.path.abspath('.'))) # Do not forget the change iCrawler part based on your project name os.environ['DJANGO_SETTINGS_MODULE'] = 'iCrawler.settings' # This is required only if Django Version > 1.8 import django django.setup() # DJANGO INTEGRATION ## Rest of settings are below ...

エラーの表示

(goscrapy) C:\Users\Jun\PycharmProjects\goscrapy\apps\scrapy_app>scrapyd-deploy Packing version 1533502405 Deploying to project "scrapy_app" in http://127.0.0.1:6800/addversion.json Server response (200): {"node_name": "DESKTOP-DJ3BDQ4", "status": "error", "message": "Traceback (most recent call last):\r\n File \"c:\users\jun\anaconda3\envs\ goscrapy\lib\runpy.py\", line 193, in _run_module_as_main\r\n \"__main__\", mod_spec)\r\n File \"c:\users\jun\anaconda3\envs\goscrapy \lib\runpy.py\", line 85, in _run_code\r\n exec(code, run_globals)\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-package s\scrapyd\runner.py\", line 40, in <module>\r\n main()\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-packages\scrapyd\ runner.py\", line 37, in main\r\n execute()\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-packages\scrapy\cmdline.py\", line 110, in execute\r\n settings = get_project_settings()\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-packages\scrapy\ \utils\project.py\", line 68, in get_project_settings\r\n settings.setmodule(settings_module_path, priority='project')\r\n File \"c:\users \jun\anaconda3\envs\goscrapy\lib\site-packages\scrapy\settings\__init__.py\", line 292, in setmodule\r\n module = import_module(modu le)\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\importlib\__init__.py\", line 126, in import_module\r\n return _bootstrap._g cd_import(name[level:], package, level)\r\n File \"<frozen importlib._bootstrap>\", line 994, in _gcd_import\r\n File \"<frozen importlib._boo tstrap>\", line 971, in _find_and_load\r\n File \"<frozen importlib._bootstrap>\", line 955, in _find_and_load_unlocked\r\n File \"<frozen imp ortlib._bootstrap>\", line 665, in _load_unlocked\r\n File \"<frozen importlib._bootstrap_external>\", line 678, in exec_module\r\n File \"<fr ozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\r\n File \"C:\Users\Jun\PycharmProjects\goscrapy\apps\scrapy_app\sc rapy_app\settings.py\", line 26, in <module>\r\n django.setup()\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-packages\d jango\__init__.py\", line 19, in setup\r\n configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)\r\n File \"c:\users\jun\anaconda 3\envs\goscrapy\lib\site-packages\django\conf\__init__.py\", line 56, in __getattr__\r\n self._setup(name)\r\n File \"c:\users\jun\ \anaconda3\envs\goscrapy\lib\site-packages\django\conf\__init__.py\", line 43, in _setup\r\n self._wrapped = Settings(settings_module) \r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\site-packages\django\conf\__init__.py\", line 106, in __init__\r\n mod = impo rtlib.import_module(self.SETTINGS_MODULE)\r\n File \"c:\users\jun\anaconda3\envs\goscrapy\lib\importlib\__init__.py\", line 126, in imp ort_module\r\n return _bootstrap._gcd_import(name[level:], package, level)\r\n File \"<frozen importlib._bootstrap>\", line 994, in _gcd_imp ort\r\n File \"<frozen importlib._bootstrap>\", line 971, in _find_and_load\r\n File \"<frozen importlib._bootstrap>\", line 941, in _find_and _load_unlocked\r\n File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\r\n File \"<frozen importlib._bootstrap>\", line 994, in _gcd_import\r\n File \"<frozen importlib._bootstrap>\", line 971, in _find_and_load\r\n File \"<frozen importlib._bootstrap>\", l ine 953, in _find_and_load_unlocked\r\nModuleNotFoundError: No module named 'config'\r\n"}

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。