0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【mac備忘録】仮想環境作成の際にシンボリックリンクとやらに助けられた話

0
Last updated at Posted at 2025-02-02

(いったん簡単に書いておきます、後日もうちょっと詳細書くかも)

大悩み:デスクトップアプリでPythonを呼び出せない。

アプリから仮想環境を作成する際、Python3.9を必要としていたのですが、なぜかPythonが呼び出されない。(Python3.9 command not foundのエラーメッセージ)

ターミナルではPython3.9をダウンロードできているし、Pathもおかしくないはず。

.PATH
/usr/local/bin/python3.9 

原因:パスがうまく設定できておらず、Pythonコマンドを見つけらていない

なんとなくこの原因まではわかっているのですが、じゃあ解決策はなんやねんと。

試行:~/.zshrcを編集
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

/usr/local/bin は通常、コマンドの実行ファイルが保存されるディレクトリのため、ここにリンクを作成することが重要です。
じゃあこのパスをシェル設定に追加するのかな?と思い、上をターミナルで実行するもエラーは変わらず。

解決:シンボリックリンクを作成する

/opt/homebrew/bin/python3.9 を python3.9 として認識させるため、シンボリックリンクを作成します。

.シンボリックリンクの作成
sudo ln -s /opt/homebrew/bin/python3.9 /usr/local/bin/python3.9

これにより python3.9 コマンドがシステム全体で使えるようになるとのことで、実行すると見事起動。

シンボリックリンクってなんやねん。

シンボリックリンクは、 「あるファイルやディレクトリを別の場所から参照できるようにする、特別な種類のファイル」 です。
通常のファイルとは異なり、シンボリックリンクは実際のファイルのコピーではなく、別のファイルやディレクトリへの参照を作成します。
ショートカットみたいなもんですね。

ターミナルでは、ln -sで、シンボリックリンクを作成できます。

上記の悩みはPython3.9のコマンドを認識するため、
/opt/homebrew/bin/python3.9 という実際のファイルを、/usr/local/bin/python3.9 という場所にシンボリックリンクとして作成するものです。これにより、システム内で python3.9 コマンドを入力すると、実際には /opt/homebrew/bin/python3.9 を指し示すことになります。

シンボリックリンクの特徴

  • 別名:シンボリックリンクは、あるファイルやディレクトリに対して「別名」を与えるような感じ
  • リンク元とリンク先:シンボリックリンクは元のファイルを指し示す「ポインタ」のような役割を果たす。リンク元(シンボリックリンク)は、リンク先(実際のファイル)へのパスを記録します。
  • 動的な参照:シンボリックリンクは元のファイルやディレクトリが更新されても、それに追従します。つまり、リンク先が更新されるとシンボリックリンクもその更新を反映します。

シンボリックリンクを使う理由

  • パスを短縮:長いパスを簡単にアクセスできるようにするため。
  • 一元管理:複数の場所で同じファイルを使いたい場合、リンクを作成するだけで管理が楽になります。
    別の場所からアクセス:異なるディレクトリにあるファイルを、別の場所から簡単に利用することができます。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?