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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4523閲覧

Pythonで自作モジュールをインポートできない

Yhaya

総合スコア439

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/02 13:11

開発環境

  • Windows10
  • VSCode

解決したい問題

以下のようなディレクトリ構造で作業をしています。

bash

1. 2├── tests 3│   └── test_load.py 4└── src 5 ├── __init__.py 6 └── loadfile.py

testsディレクトリに入っているのはテストコードです。テストコードからloadfile.py内の関数をインポートしたいと考え、次のようなコードを書きました。

python

1import sys 2sys.path.append('../src') 3 4import loadfile 5import unittest 6import os 7#...

このように書いて実行すると、No module named 'loadfile'となってしまいます。

どのように書けばloadfile.pyをインポートできるでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argparse

2018/12/02 13:22

相対パスはカレントディレクトリに対してのものなので、カレントディレクトリが期待通りのものでない可能性があります。 `os.getcwd()` は何を返しますか?
guest

回答1

0

ベストアンサー

../srcは、「カレントディレクトリの親ディレクトリにあるsrcディレクトリ」を意味するので、カレントディレクトリがtestsでは無いのでは?

スクリプト相対にしたいのなら、__file__を使って下さい。

投稿2018/12/02 13:33

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yhaya

2018/12/02 13:51

おっしゃる通りでした。VSCodeで作業しているのですが、パッケージのディレクトリで開いているため、ルートがそこになっていました。ありがとうございます。
otn

2018/12/02 13:59

痒いところに手が届くRubyでは、「今のスクリプトの場所からの相対で読み込む」という便利な命令があります。 Pythonだと、 sys.path.append(os.path.dirname(os.path.abspath(__file__))+"/../src") ですかね。もっとコンパクトに出来るのかな。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問