Ubuntu không thể tìm thấy tệp thực thi trong ~ / .local / bin


12
after installation with

pip3 install --user steem-piston
you will get a new executable piston installed in ~/.local/bin

Tôi đã cài đặt công cụ bằng cách cài đặt pip, nhưng tôi không thể tìm thấy tệp thực thi.

Tôi không chắc là tôi hiểu thư mục này là gì: ~ / .local / bin.

Có phải nó chỉ là root / local / bin?

Câu trả lời:


11

~/là tên viết tắt shell cho thư mục nhà của bạn, thông thường /home/USERNAME/, USERNAMEtên người dùng của bạn ở đâu. Nó giống như$HOME

~/.local/binlà một thư mục con có tên bintrong thư mục con có tên .localtrong thư mục nhà của bạn.

Bạn có thể dùng

~/.local/bin/pip3

để gọi pip3thực thi mới của bạn . Có thể dễ dàng hơn để thêm ~/.local/binvào $PATHbiến môi trường, xem Làm thế nào để thêm một thư mục vào đường dẫn của tôi? vì vậy bạn không cần phải gõ ~/.local/bin/tất cả các thời gian.

Hãy chắc chắn rằng bạn thêm nó trước giá trị cũ của $PATH, như

PATH="$HOME/.local/bin/:$PATH"

Cảm ơn vì bài đăng của bạn. Thật không may, tôi không thể nhìn thấy thư mục con trong thư mục nhà (nó có phải là một tập tin ẩn không?). Và khi tôi gõ lệnh đó trong terminal, tôi nhận được: bash: /home/myname/.local/bin/pip3: Không có tệp hoặc thư mục như vậy
TabulaSmaragdina 16/07/2016

Có, nếu tên của tệp hoặc thư mục bắt đầu bằng dấu chấm thì nó được ẩn theo mặc định. Bạn cũng có thể sử dụng ls -ađể lshiển thị các tập tin và thư mục ẩn.
Florian Diesch 16/07/2016

@TabulaSmaragdina Thật lạ khi tập tin không được tìm thấy. Hãy thử chạy ls -a ~/.local/bin. Nếu đầu ra dài, vui lòng chỉnh sửa nó thành câu hỏi của bạn.
wjandrea

1
Ý bạn là ~/.local/bin/pistonsao?
terdon

Lưu ý: ~/.local/bin/đã có trong $ PATH trên Ubuntu hiện đại.
Aaron Franke

7

~/.local/binđã được thêm vào PATH trong Ubuntu 16.10 và được nhập vào 16.04. Xem https://bugs.launchpad.net/ubfox/+source/bash/+orms/1588562

Nếu bạn đang chạy Ubuntu> = 16.04 với tất cả các bản cập nhật, thì nó sẽ ổn thôi. Nếu không, bạn có thể thêm nó bằng tay:

Đối với một người dùng, chỉnh sửa tệp ~/.profilevà thêm vào cuối:

PATH="$HOME/.local/bin:$PATH"

Nếu bạn muốn bất kỳ người dùng mới tạo nào có thứ này, bạn có thể thêm dòng này vào cuối /etc/skel/.profile


0

Tôi mới làm việc này hôm nay, có vẻ như tài liệu rõ ràng là khan hiếm cho những người muốn kiểm soát những gì đã cài đặt và ở đâu.

Giả sử bạn đã chạy cài đặt pip3 bất cứ điều gì, nó mặc định để đặt công cụ dưới ~ / .local, như bạn biết. Thông lệ của nó trong Unix để phân chia các loại tệp, đặt các loại "có thể chạy" dưới ~ / .local / bin.

Trong một thiết bị đầu cuối, nhập cái này để xem đường dẫn của bạn bây giờ:

$ echo $PATH

Kiểm tra xem bạn đã cài đặt công cụ python trong ~ / .local chưa

$ ls -la ~/.local/bin

Điều đó xác nhận các tập tin thực thi là có, hoặc làm cho tôi. Nếu các quyền của tệp hiển thị "x" thì chúng có thể được thực thi.

Bây giờ, thêm thư mục đó vào đường dẫn trong terminal

$ export PATH=~/.local/bin:$PATH

Kiểm tra đường dẫn của bạn một lần nữa để xem sự thay đổi. Xin nhớ rằng đó chỉ là cài đặt tạm thời cho phiên cuối đó. Nó không áp dụng cho các thiết bị đầu cuối khác cùng một lúc hoặc trong tương lai. Đó là một nơi tốt để kiểm tra mọi thứ.

Sau đó, mọi chương trình thực thi trong ~ / .local / bin sẽ chạy nếu bạn nhập tên của nó trong dòng lệnh. Không cần phải chạy "~ / .local / bin / jupyter", chẳng hạn. Chỉ cần gõ "jupyter". Không cần "./" mà đôi khi bạn thấy, đó là khi bạn khởi chạy một chương trình từ thư mục làm việc không có trong đường dẫn.

Nếu sau này bạn quyết định muốn làm cho nó vĩnh viễn, để ~ / .local / bin luôn ở trong PATH của bạn, bạn có thể làm điều đó bằng cách chỉnh sửa một số tệp cấu hình môi trường. Tùy thuộc vào thiết lập của bạn, ví dụ, trong tệp ".bashrc" trong thư mục nhà của tôi, dòng cuối cùng là "export PATH = $ PATH: $ HOME / bin". Vì vậy, tôi có thể đặt $ HOME / local / bin ở phía trước. Lưu ý tôi đã viết $ HOME, không phải "~" trong đó. Sau đó, mỗi khi tôi sử dụng vỏ BASH, PATH sẽ được sửa. Nếu bạn có thể sử dụng các shell khác, tôi nghĩ điều đúng đắn là thay đổi ~ / .profile. Tôi nghĩ rằng tất cả các shell trong Ubuntu sẽ cung cấp tệp đó.

Trong trường hợp của tôi, tôi đã cài đặt một số chương trình với pip3, chẳng hạn như jupyter. Một cách để đảm bảo nơi đã được cài đặt vào là chạy

$ pip3 list

hiển thị tất cả các gói có sẵn, không chỉ các gói được cài đặt bởi pip3.

$ pip3 show jupyter

Trong trường hợp của tôi, ví dụ:

---
Metadata-Version: 2.0
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
Installer: pip
License: BSD
Location: /home/pauljohn/.local/lib/python3.5/site-packages
Requires: nbconvert, ipykernel, ipywidgets, notebook, jupyter-console, qtconsole
Classifiers:
  Intended Audience :: Developers
  Intended Audience :: System Administrators
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

Tôi không muốn điều này nghe giống như một ngọn lửa, nhưng nó có vẻ giống như một cuộc tấn công. Tôi cảnh báo bạn không nên háo hức làm theo lời khuyên mà một số người ở đây sẽ cung cấp, để chạy "sudo pip3 xxx". Nói chung, bạn chỉ muốn chạy cài đặt gốc chỉ với các gói Debian, không phải với pip3. Nếu bạn chạy mà không có sudo, bạn đang giới hạn sự nguy hiểm cho tài khoản người dùng. Nếu bạn gặp rắc rối trong khi chạy tập lệnh với quyền root, bạn có thể phân tán các tệp xung quanh đĩa cứng và hối tiếc. Đặc biệt nếu người khác đăng nhập và sử dụng máy tính đó, tránh làm bất cứ điều gì như root trừ khi bạn tự tin.

Cũng đáng lưu ý, rằng mặc định pip3 để cài đặt vào ~ / .local, nhưng điều đó là không cần thiết. Đọc "man pip3", tìm "-t" (--target). Bạn có thể chỉ định thư mục cài đặt. Tôi nghĩ điều đó thật tuyệt vì bạn có thể hạn chế mọi thiệt hại cho một thư mục khác và xóa nó bất cứ khi nào bạn muốn. ~ / .local có thể có những thứ có giá trị khác được cài đặt bởi các chương trình khác và bạn không muốn xóa sạch chúng. Tôi nghĩ rằng ~ / .local là nơi dành cho cài đặt nhiều hơn các chương trình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.