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

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

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

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

2回答

1717閲覧

usr/local/bin配下のファイルの中身

revoiot

総合スコア188

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

2クリップ

投稿2020/06/17 08:10

編集2020/06/17 12:56

プログラミング初心者です。
大変基礎的な内容かもしれませんが、質問させてください。

あるツールのDownloads配下のフォルダでインストールを実行(pip3 install package)しました。
Downloads配下のフォルダへのインストール後、usr/local/bin配下にも同じ名前のファイルが自動的にインストールされることを確認し、
下記のように、インストール場所が異なる同じファイル名のdumppdf.pyのファイル中身を確認しましたが、両ファイルの中身が違いました。
なぜ、同じファイル名にもかかわらず中身が異なるのでしょうか?

加えて、新しいバージョンのdumppdf.pyを更新したい場合、どのようにしてlocal配下のファイルにも更新することが可能でしょうか?

お分かりになる方、ご教授いただけると幸いです。

pip listコマンド実行後

pdfminer.sixのset.py↓

from setuptools import setup from os import path import pdfminer as package with open(path.join(path.abspath(path.dirname(__file__)), 'README.md')) as f: readme = f.read() setup( name='pdfminer.six', version=package.__version__, packages=['pdfminer'], package_data={'pdfminer': ['cmap/*.pickle.gz']}, install_requires=[ 'chardet ; python_version > "3.0"', 'pycryptodome', 'sortedcontainers', ], extras_require={ "dev": ["nose", "tox"], "docs": ["sphinx", "sphinx-argparse"], }, description='PDF parser and analyzer', long_description=readme, long_description_content_type='text/markdown', license='MIT/X', author='Yusuke Shinyama + Philippe Guglielmetti', author_email='pdfminer@goulu.net', url='https://github.com/pdfminer/pdfminer.six', scripts=[ 'tools/pdf2txt.py', 'tools/dumppdf.py', ], keywords=[ 'pdf parser', 'pdf converter', 'layout analysis', 'text mining', ], python_requires='>=3.4', classifiers=[ 'Programming Language :: Python', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3 :: Only', 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Intended Audience :: Developers', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Topic :: Text Processing', ], )

pdfminer3kminerのset.py↓

import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="pdfminer3k", version="1.3.4", author="Serhat Can", author_email="author@example.com", description="Forked from original pdfminer", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/canserhat77/pdfminer3k", download_url="https://github.com/canserhat77/pdfminer3k/archive/v1.3.4.tar.gz", packages=setuptools.find_packages(), classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], install_requires=[ 'ply', ], python_requires='>=3.6', )

引用テキスト
Downloads配下↓
Downloads配下
usr/local/bin配下↓
usr/local/bin配下

Downloads配下↓

#!/usr/bin/env python3 """Extract pdf structure in XML format""" import logging import os.path import re import sys import warnings from argparse import ArgumentParser import pdfminer from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines, PDFXRefFallback, \ PDFNoValidXRefWarning from pdfminer.pdfpage import PDFPage from pdfminer.pdfparser import PDFParser from pdfminer.pdftypes import PDFObjectNotFound, PDFValueError from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value from pdfminer.psparser import PSKeyword, PSLiteral, LIT from pdfminer.utils import isnumber logging.basicConfig() ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]') def e(s): if isinstance(s, bytes): s = str(s, 'latin-1') return ESC_PAT.sub(lambda m: '&#%d;' % ord(m.group(0)), s)

usr/local/bin配下↓

#!/usr/local/opt/python/bin/python3.7 # # dumppdf.py - dump pdf contents in XML format. # # usage: dumppdf.py [options] [files ...] # options: # -i objid : object id # import sys, os.path, re from io import StringIO from pdfminer.psparser import PSKeyword, PSLiteral, LIT from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines from pdfminer.pdftypes import PDFObjectNotFound, PDFValueError from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value from pdfminer.pdfpage import PDFPage from pdfminer.utils import isnumber, q ESCAPE = set(map(ord, '&<>"')) def encode(data): buf = StringIO() for b in data: if b < 32 or 127 <= b or b in ESCAPE: buf.write(f'&#{b};') else: buf.write(chr(b)) return buf.getvalue()

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

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

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

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

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

y_waiwai

2020/06/17 08:11

どこがどうちがうんでしょうか
revoiot

2020/06/17 08:30 編集

コメントいただきありがとうございます。 新しい画像に更新いたしました。 画像をみていただくと、import文、def e(s):の中身などが両者のファイルで異なると思います。 local/bin配下に異なる内容のファイルが自動で格納されるのでしょうか? ご教授いただけると幸いです。
quickquip

2020/06/17 08:36

> あるツールのインストールメディアをDownloadsフォルダに格納し、pip3 install packageでフォルダ内に直接インストールを行いました。 これでは第三者には"実際は何をしたのか"が伝わりません。 個人的には、カレントディレクトリを移動して pip3 install . しなかったのか? という疑問がありますが。
y_waiwai

2020/06/17 08:43

画像で出さされてもねえ。。
revoiot

2020/06/17 09:07

quiquiさん 説明がわかりにくく申し訳ございません。。。 説明文を編集いたしました。 >個人的には、カレントディレクトリを移動して >pip3 install . >しなかったのか? という疑問がありますが。 カレントディレクトリから移動しておりました。 説明不十分であり、申し訳ございません。。
revoiot

2020/06/17 09:09

>画像で出さされてもねえ。。 ご指摘いただきありがとうございます! 該当コードを追加いたしました。 ご確認いただけると幸いです。
quickquip

2020/06/17 09:10 編集

わかりにくいのではなくて書かれていないという意味で書きました
revoiot

2020/06/17 09:21

>わかりにくいのではなくて書かれていないという意味で書きました コメントいただきありがとうございます。。
quickquip

2020/06/17 09:27

cd どこか/index_extraction/pdfminer.six-develop pip install . としたのでしょうか? (setup.py が見えることからの推測ですが)
revoiot

2020/06/17 09:31 編集

cd どこか/index_extraction/pdfminer.six-develop >pip install . >としたのでしょうか? (setup.py が見えることからの推測ですが) おっしゃる通りでございます。
guest

回答2

0

大胆な推測を挙げるとしたら、2つのファイルは似かよった機能をもつ別のプログラムから提供された別のファイルです。
ひとつはあなたが最近インストールしたもの、もう一つはOSインストール時にインストールされていたか、以前にインストールしたがインストールしたことを知らない/忘れたもの。
例えばPDFファイルの内容を吐き出すプログラムに付けるpythonプログラムの名前としてdumppdf.pyが採用されたのではないかと思います。

第三者が再現させることができるだけの情報を提供してください。意欲のある人が検証してくれるでしょう。
必要情報:
使用しているOSの種別、バージョン、適用している(関連)パッケージの一覧、修正の適用状況
「あるツール」の詳細(入手方法を含む)
インストール手順の詳細
気にしているファイルの情報(位置、ファイル名など)

第三者が再現させることができるだけの情報を提供するつもりがないのならば、自分で再現して検証してください。

あなたが自分で検証するのならば

  1. 気になるファイル名を洗い出し、位置、日付、サイズ等を記録しておく。
  2. 新しいシステムを用意し、1.のファイルがあればその情報を記録しておく。
  3. 「あるツール」をインストールする。
  4. 1.~2.で記録した情報がインストール後にどうなったかをチェックする。

で分かるのでは?

なお、

新しいバージョンのdumppdf.pyを更新したい場合、どのようにしてlocal配下のファイルにも更新することが可能でしょうか?

に関しては「あるツール」を調べればやり方が分かるかもしれませんし、コピー元が分かれば、手作業でコピーすれば更新できるでしょう。

投稿2020/06/18 09:34

sage

総合スコア1216

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

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

revoiot

2020/06/18 13:43

2つのファイルの違い、具体的な検証のやり方をわかりやすく丁寧にご教示くださりありがとうございます。 今後、検証する上での参考にさせていただきます。 今回の質問で、第三者が再現できる情報を提供できなかった事を大変反省しております。 今後は、このような事にならないように、しっかりと情報整理をした上で質問できるようにして参ります。 改めまして、親切丁寧に教えてくださりありがとうございました。
guest

0

ベストアンサー

一般論として(インストーラが意図的にそうしているのでなければ)そういうことが起きる可能性は低いと思うので、起きていることから逆算すると

plain

1cd どこか/index_extraction/pdfminer3k-master 2pip install .

したように見えますね。

(追記)
まず

pip list

してパッケージとしてインストールされたものがどういう名前で、どんなバージョンになっているか確認するのが先でした!
setup.pyに書かれているsetup関数のname引数や
pdfminer/__init__.pyに書かれている__version__と見比べればどこからインストールされたものか判断できそうです。


"新しいバージョンのdumppdf.pyを更新したい場合、どのようにしてlocal配下のファイルにも更新することが可能でしょうか?"への回答でもありますが、--forece-reinstallオプションで

plain

1cd どこか/index_extraction/pdfminer.six-develop 2pip install --forece-reinstall .

してみてはどうでしょう。


(追記)

pdfminerが別バージョンで3つ見えますね。
pdfminerの別バージョンのインストールを少なくとも3回実行しています。
うち1回はこの回答のpip install --forece-reinstallの結果かもしれませんが、それを差し引いても、質問には書かれていないインストールを少なくとも1回実行しているはずです。あるいは、pdfminer.sixをインストールした後に入れた別の何かの依存性でpdfminerが勝手に入った、などの可能性も考えられます
この状況では、/usr/local/bin/dumppdf.pyを確認した直前に実行したインストールがどれに由来するものかを明らかにしないと質問が成立しません。
インストールと/usr/local/bin/dumppdf.pyの確認を、どういうコマンドをどういう順番で行ったのか、それが提示されない限り、

最後にインストールしたファイルと違うファイルを見ているからまったく違うだけ

という可能性がもっとも高いと判断するだけです。


ファイルの内容から推測すると、後からpipで入れた何かが依存性でpdfminerを上書きでインストールしてしまった可能性が一番高そうですね。

投稿2020/06/17 09:45

編集2020/06/18 10:21
quickquip

総合スコア11038

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

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

revoiot

2020/06/17 10:05 編集

ご回答いただきありがとうございます。 私はプログラミング初心者であり、基礎的な理解が抜けているため、ちゃんとした質問ができていないかもしれません、、、 ツールファイル (dumppdf.pyなど)を、Downloads配下などのフォルダでインストールし、 local/bin配下にも自動的に同じ名前のファイルのものが生成された場合、そのファイルの中身はDownloads配下にあるファイルの中身と完全に同じであることが一般的であるという認識で合っていますでしょうか?(そもそもこの前提がどうなのか理解しておらず、先にこれを確認するべきでした、、、申し訳ございません、、)
quickquip

2020/06/17 10:36

少なくとも1行目が書き換わるので、完全に同じであることはないです。
quickquip

2020/06/17 10:39

"完全に同じかどうか?"はここではいっさい問題ではないと思いますが。
revoiot

2020/06/17 11:35 編集

>少なくとも1行目が書き換わるので、完全に同じであることはないです。 ご回答いただきありがとうございます。私が今回質問対象にしているファイルでは、1行目ではなく、多くの行で違いが見られました。 >"完全に同じかどうか?"はここではいっさい問題ではないと思いますが。 この質問をさせていただいた背景として、cdでpdfminer.six-developディレクトリに移動し、 ①dumppdf.pyを実行 (特にパス指定せずに、ファイル実行するとlocal/bin配下のものが実行される?) ②tools/dumppdf.pyを実行 (Download配下にあるファイルにパス指定) した結果、①、②で処理結果が異なりました。 結果が異なる原因としてあげられるのは、①と②の実行ファイルの中身が違う事でした。(片方は、import文が存在しないというエラーが発生しました。) そこで、そもそも ①なぜ同じ名前のファイルが違う場所に自動生成するのか? ②それら同じファイルは、どのような使い分けをする必要があるのか? ③なぜそれら同じ名前のファイルの中身が異なる可能性があるのか? という事がまず基本的な理解できている必要があると思い、質問させていただきました。 私の質問の仕方が悪く、大変お手数をおかけしてしまい、申し訳ございません。。。
quickquip

2020/06/17 12:15

私からのコメントは「それをどこから持ってきて何をしたのか書かなければ誰も追試できない。だから書きましょう」です。私は何度そう書いたでしょうね? 第三者が追試できる状況をあなたが作らないから、私から確定的な回答は不可能で、状況から逆算した推測としてしか回答できません。
quickquip

2020/06/17 12:17

--forece-reinstall で pdfminer.six-develop からインストールしなおしても再現するのでしょうか?
revoiot

2020/06/17 12:17

大変申し訳ございません、、、
quickquip

2020/06/17 12:25

今のところ ①なぜ同じ名前のファイルが違う場所に自動生成するのか? というようなことは起きてないのではないか? と **私は** 状況から推測しているだけです。 事実ならどういうメカニズムでそういうことが起きるのか、確認したいところですが。
revoiot

2020/06/18 13:24 編集

>ファイルの内容から推測すると、後からpipで入れた何かが依存性でpdfminerを上書きでインストールしてしまった可能性が一番高そうですね。 再度すべてのバージョンで上記を検証したところ、上書きで保存がされていたことがわかり、 これでlocal/bin内のファイルが、自分のdownloadフォルダ配下のファイルと、基本的に内容は同じであるという確認がとれました。 この度は、大変親切にご教授くださり、本当にありがとうございました。 質問文で第三者が実現できる情報を提供せずに、回答者様を何度も混乱させてしまった事を深くお詫びを申しあげます。 次回からは、第三者が実現できる情報ならびにわかりやすい質問文を書くように心がけて参ります。 改めまして、大変親切にご教授くださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問